From 42a36d0938727cc94d085a898f3ac85207dde2d3 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Tue, 27 Jul 2021 23:48:36 +0000 Subject: [PATCH] Merge branch 'master' of github.com:Chizi123/Scripts --- backup.sh | 108 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 69 insertions(+), 39 deletions(-) diff --git a/backup.sh b/backup.sh index 8451eaf..83a2b73 100755 --- a/backup.sh +++ b/backup.sh @@ -1,50 +1,80 @@ #!/bin/sh +BACKUP_DIR="/backup/work/" +FILES_DIR="/home/joel/OneDrive/" +RCLONE_BACKUP=("GoogleDrive" "Mega" "unimelb" "pCloud" "gdrive_unimelb" "NC_home" "NextCloud") +RCLONE_FILES=("Mega" "unimelb" "gdrive_unimelb" "NC_home") +EXCLUDES="--exclude '*~' --exclude '*#*' --exclude '.DS_Store' --exclude '*.7z' " + +function sync() { + case $1 in + "sout") + rclone sync $([ $2 != "p" ] && echo "$BACKUP_DIR" || echo "$FILES_DIR") \ + $1:/data/Cloud/$([ $2 != "p" ] && echo "backup" || echo "files") $(! [ -z $3 ] && echo "-P") + ;; + *) + rclone sync $([ $2 != "p" ] && echo "$BACKUP_DIR" || echo "$FILES_DIR") \ + $1:/Uni/$([ $2 != "p" ] && echo "borg" || echo "files") $(! [ -z $3 ] && echo "-P") + ;; + esac +} + +function sync_all() { + if [ -z $1 ]; then + for i in ${RCLONE_BACKUP[*]}; do + #echo -e '\033[0;31m'$i backup'\033[0m' + sync $i n & + done + for i in ${RCLONE_FILES[*]}; do + #echo -e '\033[0;31m'$i files'\033[0m' + sync $i p & + done + else + for i in ${RCLONE_BACKUP[*]}; do + echo -e '\033[0;31m'$i backup'\033[0m' + sync $i n p + done + for i in ${RCLONE_FILES[*]}; do + echo -e '\033[0;31m'$i files'\033[0m' + sync $i p p + done + fi +} + cd /home/joel/OneDrive if [ "$1" = "sync" ]; then - echo Syncing - BACKUP_DIR="/backup/work/" - echo OneDrive Personal - rclone sync $BACKUP_DIR "OneDrive_Personal":/Uni -P - echo NextCloud - rclone sync $BACKUP_DIR "NextCloud":/Uni -P - echo GoogleDrive - rclone sync $BACKUP_DIR "GoogleDrive":/Uni -P - echo Mega - rclone sync $BACKUP_DIR "Mega":/Uni -P - echo unimelb - rclone sync $BACKUP_DIR "unimelb":/ -P - echo sout - rclone sync $BACKUP_DIR "sout":/data/Cloud/backup -P - echo sout files - rclone sync /home/joel/OneDrive "sout":/data/Cloud/files -P + echo -e '\033[0;32m'Syncing'\033[0m' + sync_all p exit +elif [ "$1" = "cron" ]; then + borg create \ + --compression zstd,22 \ + $EXCLUDES \ + \ + $BACKUP_DIR::"$(date +%F+%R)" \ + $FILES_DIR +else + borg create \ + --verbose \ + --stats \ + --compression zstd,22 \ + $EXCLUDES \ + \ + $BACKUP_DIR::"$(date +%F+%R)" \ + $FILES_DIR fi -LAST="$(duplicacy list | tail -n1 | cut -d' ' -f4)" -CURR="$(duplicacy backup | tail -n1 | sed 's/[^0-9]//g')" -#LAST=2 -#CURR=4 -DIFF="$(duplicacy diff -r $CURR -r $LAST | grep '-')" +borg prune \ + --keep-hourly 12 \ + --keep-daily 8 \ + --keep-monthly 2 \ + $BACKUP_DIR -#echo "curr - $CURR" -#echo "last - $LAST" -#echo "diff - $DIFF" - -duplicacy prune -keep 7:30 -keep 1:7 -exclusive > /dev/null 2>&1 - -if [ -z "$DIFF" ]; then - duplicacy prune -r $CURR -exclusive > /dev/null 2>&1 +LAST="$(borg list $BACKUP_DIR | tail -n2 | cut -d' ' -f1)" +if [ -z "$(borg diff $BACKUP_DIR::$(echo $LAST | cut -d' ' -f1) $(echo $LAST | cut -d' ' -f2))" ]; then + borg delete $BACKUP_DIR::$(echo $LAST | cut -d' ' -f2) else - echo "New backup $CURR" - BACKUP_DIR="/backup/work/" - rclone sync $BACKUP_DIR "OneDrive_Personal":/Uni & - rclone sync $BACKUP_DIR "NextCloud":/Uni & - rclone sync $BACKUP_DIR "GoogleDrive":/Uni & - rclone sync $BACKUP_DIR "Mega":/Uni & - rclone sync $BACKUP_DIR "unimelb":/ & - rclone sync $BACKUP_DIR "sout":/data/Cloud/backup & - rclone sync /home/joel/OneDrive "sout":/data/Cloud/files & - #rclone sync $BACKUP_DIR "Oracle":/Uni + echo "New backup $(echo $LAST | cut -d' ' -f2)" + sync_all fi -- Gitblit v1.9.3