mirror of https://github.com/Chizi123/Scripts.git

Joel Grunbaum
2021-08-31 5ce9b0c04ee5b5e9dc5b2ae9b99a70a4857ae666
commit | author | age
64e605 1 #!/bin/sh
JG 2
ae2fb4 3 BACKUP_DIR="/backup/work/"
JG 4 FILES_DIR="/home/joel/OneDrive/"
d6e801 5 RCLONE_BACKUP=("GoogleDrive" "Mega" "unimelb" "pCloud" "gdrive_unimelb")
JG 6 RCLONE_FILES=("Mega" "unimelb" "gdrive_unimelb")
7 EXCLUDES="/home/joel/Scripts/backup_patterns.txt"
ae2fb4 8
JG 9 function sync() {
d6e801 10     case $1 in
JG 11     "sout")
12         rclone sync $([ $2 != "p" ] && echo "$BACKUP_DIR" || echo "$FILES_DIR") \
13            $1:/data/Cloud/$([ $2 != "p" ] && echo "backup" || echo "files") $(! [ -z $3 ] && echo "-P")
14         ;;
15     *)
16         rclone sync $([ $2 != "p" ] && echo "$BACKUP_DIR" || echo "$FILES_DIR") \
17            $1:/Uni/$([ $2 != "p" ] && echo "borg" || echo "files")  $(! [ -z $3 ] && echo "-P")
18         ;;
19     esac
ae2fb4 20 }
JG 21
22 function sync_all() {
d6e801 23     if [ -z $1 ]; then
JG 24     for i in ${RCLONE_BACKUP[*]}; do
25         #echo -e '\033[0;31m'$i backup'\033[0m'
26         sync $i n &
27     done
28     for i in ${RCLONE_FILES[*]}; do
29         #echo -e '\033[0;31m'$i files'\033[0m'
30         sync $i p &
31     done
32     else
33     for i in ${RCLONE_BACKUP[*]}; do
34         echo -e '\033[0;31m'$i backup'\033[0m'
35         sync $i n p
36     done
37     for i in ${RCLONE_FILES[*]}; do
38         echo -e '\033[0;31m'$i files'\033[0m'
39         sync $i p p
40     done
41     fi
ae2fb4 42 }
JG 43
9af599 44 if [ "$1" = "sync" ]; then
d6e801 45     echo -e '\033[0;32m'Syncing'\033[0m'
JG 46     sync_all p
47     exit
49eec3 48 elif [ "$1" = "cron" ]; then
af5c53 49     borg create \
49eec3 50      --compression zstd,22 \
d6e801 51      --exclude-from $EXCLUDES \
49eec3 52      \
JG 53      $BACKUP_DIR::"$(date +%F+%R)" \
54      $FILES_DIR
55 else
af5c53 56     borg create \
49eec3 57      --verbose \
JG 58      --stats \
59      --compression zstd,22 \
d6e801 60      --exclude-from $EXCLUDES \
49eec3 61      \
JG 62      $BACKUP_DIR::"$(date +%F+%R)" \
63      $FILES_DIR
f7f566 64 fi
JG 65
49eec3 66 borg prune \
d6e801 67      --keep-hourly 12 \
JG 68      --keep-daily 8 \
69      --keep-monthly 2 \
70      $BACKUP_DIR
64e605 71
49eec3 72 LAST="$(borg list $BACKUP_DIR | tail -n2 | cut -d' ' -f1)"
d6e801 73 TOP="$(echo $LAST | cut -d' ' -f1)"
JG 74 BOTTOM="$(echo $LAST | cut -d' ' -f2)"
75 if [ -z "$(borg diff $BACKUP_DIR::$TOP $BOTTOM)" ]; then
76     borg delete $BACKUP_DIR::$(echo $LAST | cut -d' ' -f2)
f7f566 77 else
d6e801 78     echo "New backup $(echo $LAST | cut -d' ' -f2)"
JG 79     sync_all
f7f566 80 fi