update
This commit is contained in:
parent
f65caf2b6b
commit
89f29aab66
@ -9,7 +9,7 @@ RUN adduser -D -h /usr/local/app backup
|
||||
|
||||
WORKDIR /usr/local/app
|
||||
|
||||
COPY entrypoint.sh backup.sh reload.sh initdb.sql /usr/local/app/
|
||||
COPY entrypoint.sh backup.sh reload.sh insert.sh initdb.sql /usr/local/app/
|
||||
|
||||
ENV USER=backup
|
||||
|
||||
|
1
TODO
Normal file
1
TODO
Normal file
@ -0,0 +1 @@
|
||||
- Clean old files if expiration age or iteration number is given
|
12
backup.sh
12
backup.sh
@ -3,7 +3,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$#" -ne 1 ] ; then
|
||||
usage "$0 <id>"
|
||||
echo "usage: $0 <id>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -17,15 +17,17 @@ function extract() {
|
||||
echo "select $1 from files where id=$id" | sqlite3 db/db.sqlite
|
||||
}
|
||||
|
||||
pass_file="$(mktemp)"
|
||||
|
||||
# Extract variables from database
|
||||
username="$(extract username)"
|
||||
password="$(extract password)"
|
||||
extract password > "$pass_file"
|
||||
server="$(extract server)"
|
||||
export_path="$(extract export_path)"
|
||||
backup_url="$(extract backup_url)"
|
||||
|
||||
# Create destination directory (fails if exists)
|
||||
curl -u "$username:$password" -X MKCOL "$server/remote.php/dav/files/$username/$export_path"
|
||||
curl -u "$username" -X MKCOL "$server/remote.php/dav/files/$username/$export_path" < "$pass_file"
|
||||
|
||||
name="$(basename "$backup_url")"
|
||||
# Insert date before file extention
|
||||
@ -36,6 +38,6 @@ tmp="$(mktemp)"
|
||||
curl "$backup_url" > "$tmp"
|
||||
|
||||
echo "Uploading as $export_path/$new_name"
|
||||
curl -u "$username:$password" -X PUT --data-binary "@$tmp" "$server/remote.php/dav/files/$username/$export_path/$new_name"
|
||||
curl -u "$username" -X PUT --data-binary "@$tmp" "$server/remote.php/dav/files/$username/$export_path/$new_name" < "$pass_file"
|
||||
|
||||
rm "$tmp"
|
||||
rm "$tmp" "$pass_file"
|
||||
|
5
build
Executable file
5
build
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
docker build . --network host -t jeancloud/backup-to-nextcloud
|
||||
docker push jeancloud/backup-to-nextcloud
|
@ -32,7 +32,7 @@ while true ; do
|
||||
echo "Invalid cron times for id=$id : '$cron_raw'"
|
||||
continue
|
||||
fi
|
||||
echo "$id 5 $cron backup.sh $id" >> "$cronfile"
|
||||
echo "$(expr $id % 60) 5 $cron /usr/local/app/backup.sh $id" >> "$cronfile"
|
||||
|
||||
done <"$tmp"
|
||||
rm "$tmp"
|
||||
|
@ -5,5 +5,7 @@ CREATE TABLE files (
|
||||
server text NOT NULL,
|
||||
export_path text NOT NULL,
|
||||
backup_url text NOT NULL,
|
||||
crontab_time text NOT NULL
|
||||
)
|
||||
crontab_time text NOT NULL,
|
||||
expiration_age int DEFAULT NULL,
|
||||
expiration_number int DEFAULT NULL
|
||||
);
|
||||
|
32
insert.sh
Executable file
32
insert.sh
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$#" -ne 5 ] ; then
|
||||
echo "Usage: $0 <username> <server> <export_path> <backup_url> <crontab_time>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
username="$1"
|
||||
password=""
|
||||
server="$2"
|
||||
export_path="$3"
|
||||
backup_url="$4"
|
||||
crontab_time="$5"
|
||||
|
||||
pass_file="$(mktemp)"
|
||||
while [ ! -s "$pass_file" ] ; do
|
||||
echo -n 'Type password in: '
|
||||
head -qn 1 /dev/stdin | tr -d '\n' > "$pass_file"
|
||||
done
|
||||
|
||||
sql_req="$(mktemp)"
|
||||
echo -n "insert into files (username, password, server, export_path, backup_url, crontab_time) values ('$username','" > "$sql_req"
|
||||
cat "$pass_file" >> "$sql_req"
|
||||
echo -n "','$server','$export_path', '$backup_url', '$crontab_time');" >> "$sql_req"
|
||||
sqlite3 db/db.sqlite < "$sql_req"
|
||||
echo "Enregistrement terminé"
|
||||
|
||||
rm "$sql_req" "$pass_file"
|
||||
|
||||
./reload.sh
|
Loading…
Reference in New Issue
Block a user