From d6e801a44971f9e6ee6d1282b3ae0912e0033ba3 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Tue, 24 Aug 2021 11:39:22 +0000
Subject: [PATCH] Updated to excludes file
---
backup.sh | 112 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 71 insertions(+), 41 deletions(-)
diff --git a/backup.sh b/backup.sh
index 8451eaf..fd5e64e 100755
--- a/backup.sh
+++ b/backup.sh
@@ -1,50 +1,80 @@
#!/bin/sh
-cd /home/joel/OneDrive
+BACKUP_DIR="/backup/work/"
+FILES_DIR="/home/joel/OneDrive/"
+RCLONE_BACKUP=("GoogleDrive" "Mega" "unimelb" "pCloud" "gdrive_unimelb")
+RCLONE_FILES=("Mega" "unimelb" "gdrive_unimelb")
+EXCLUDES="/home/joel/Scripts/backup_patterns.txt"
+
+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
+}
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
- exit
+ echo -e '\033[0;32m'Syncing'\033[0m'
+ sync_all p
+ exit
+elif [ "$1" = "cron" ]; then
+ borg create \
+ --compression zstd,22 \
+ --exclude-from $EXCLUDES \
+ \
+ $BACKUP_DIR::"$(date +%F+%R)" \
+ $FILES_DIR
+else
+ borg create \
+ --verbose \
+ --stats \
+ --compression zstd,22 \
+ --exclude-from $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)"
+TOP="$(echo $LAST | cut -d' ' -f1)"
+BOTTOM="$(echo $LAST | cut -d' ' -f2)"
+if [ -z "$(borg diff $BACKUP_DIR::$TOP $BOTTOM)" ]; 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.10.0