| | |
| | | #!/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" |
| | | |
| | | 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 -P |
| | | exit |
| | | 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 -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 1:7 -keep 7:30 -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 & |
| | | #rclone sync $BACKUP_DIR "Oracle":/Uni |
| | | echo "New backup $(echo $LAST | cut -d' ' -f2)" |
| | | sync_all |
| | | fi |