aboutsummaryrefslogtreecommitdiff
path: root/docker/auto-backup/daemon.bash
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-11-23 14:17:16 +0800
committercrupest <crupest@outlook.com>2022-11-23 14:17:16 +0800
commit6272b219ba4fb29dd542d10cb846a0dbb6edf4ea (patch)
tree5096701ba667057049597ca8f913ee91aaa1e009 /docker/auto-backup/daemon.bash
parent647bebc5cc01ab6e1714885563d8b09e2ed51a24 (diff)
downloadcrupest-6272b219ba4fb29dd542d10cb846a0dbb6edf4ea.tar.gz
crupest-6272b219ba4fb29dd542d10cb846a0dbb6edf4ea.tar.bz2
crupest-6272b219ba4fb29dd542d10cb846a0dbb6edf4ea.zip
Add backup.
Diffstat (limited to 'docker/auto-backup/daemon.bash')
-rw-r--r--docker/auto-backup/daemon.bash58
1 files changed, 58 insertions, 0 deletions
diff --git a/docker/auto-backup/daemon.bash b/docker/auto-backup/daemon.bash
new file mode 100644
index 0000000..db49e9b
--- /dev/null
+++ b/docker/auto-backup/daemon.bash
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+
+set -e
+
+# Check I'm root.
+if [[ $EUID -ne 0 ]]; then
+ echo "This script must be run as root" 1>&2
+ exit 1
+fi
+
+# Check if CRUPEST_AUTO_BACKUP_BUCKET_NAME is defined.
+if [[ -z "$CRUPEST_AUTO_BACKUP_BUCKET_NAME" ]]; then
+ echo "CRUPEST_AUTO_BACKUP_BUCKET_NAME is not defined or empty"
+ exit 1
+fi
+
+rclone --version
+
+# Check xz and tar
+xz --version
+tar --version
+
+function backup {
+ # Output "Begin backup..." in yellow and restore default
+ echo -e "\e[0;103m\e[K\e[1mBegin backup..." "\e[0m"
+
+ # Get current time and convert it to YYYY-MM-DDTHH.MM.SS
+ current_time=$(date +%Y-%m-%dT%H.%M.%S)
+ echo "Current time: $current_time"
+ echo "Create tar.xz for data..."
+
+ # tar and xz /data to tmp
+ tar -cJf /tmp/data.tar.xz -C / data
+
+ echo "Use rclone to upload data..."
+ # upload to remote
+ rclone copyto /tmp/data.tar.xz "mycos:$CRUPEST_AUTO_BACKUP_BUCKET_NAME/$current_time.tar.xz"
+
+ echo "Remove tmp file..."
+ # remove tmp
+ rm /tmp/data.tar.xz
+
+ # echo "Backup finished!" in green and restore default
+ echo -e "\e[0;102m\e[K\e[1mFinish backup!" "\e[0m"
+}
+
+echo "Initial delay: $CRUPEST_AUTO_BACKUP_INIT_DELAY"
+sleep "$CRUPEST_AUTO_BACKUP_INIT_DELAY"
+
+# forever loop
+while true; do
+ backup
+
+ # sleep for CRUPEST_AUTO_BACKUP_INTERVAL
+ echo "Sleep for $CRUPEST_AUTO_BACKUP_INTERVAL for next backup..."
+ sleep "$CRUPEST_AUTO_BACKUP_INTERVAL"
+done
+