diff options
Diffstat (limited to '.local/bin/backups')
| -rwxr-xr-x | .local/bin/backups/assimilate | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/.local/bin/backups/assimilate b/.local/bin/backups/assimilate deleted file mode 100755 index fd6ed7f..0000000 --- a/.local/bin/backups/assimilate +++ /dev/null | |||
| @@ -1,60 +0,0 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # Full system backup with borg | ||
| 3 | |||
| 4 | # Validate argument - should either be onsite or offsite to specify location | ||
| 5 | ERRMSG="error: please specify either onsite or offsite" | ||
| 6 | [ $# -ne 1 ] && echo $ERRMSG && exit 1 | ||
| 7 | [ "$1" != "onsite" -a "$1" != "offsite" ] && echo $ERRMSG && exit 1 | ||
| 8 | |||
| 9 | # Set variables | ||
| 10 | LOCATION="$1" | ||
| 11 | SUDO_OPTS="--preserve-env=BORG_PASSCOMMAND,PASSWORD_STORE_DIR" | ||
| 12 | CREATE_OPTS="--warning --stats --show-rc --exclude-caches --one-file-system" | ||
| 13 | LOG="$HOME/.config/borg/log" | ||
| 14 | |||
| 15 | # Hack to get repository passphrase from pass | ||
| 16 | # The passcommand will be invoked as root, so use sudo to run it as the user calling the script | ||
| 17 | # who owns the password store. The environmental variable PASSWORD_STORE_DIR is passed through | ||
| 18 | # SUDO_OPTS to the borg commands, and then passed to this command from the borg command | ||
| 19 | # by the same means. This allows custom password store locations to work with this script. | ||
| 20 | export BORG_PASSCOMMAND="sudo $SUDO_OPTS -u $USER pass Borg-Backup/$(hostname)-$LOCATION" | ||
| 21 | |||
| 22 | # Create variables and function to monitor exit status | ||
| 23 | WARNING=0 | ||
| 24 | ERROR=0 | ||
| 25 | check_rc() { | ||
| 26 | rc=$1 | ||
| 27 | [ $1 -eq 1 ] && WARNING=1 | ||
| 28 | [ $1 -eq 2 ] && ERROR=1 | ||
| 29 | } | ||
| 30 | |||
| 31 | # Start backup | ||
| 32 | echo -e "\n$LOCATION $(date)\n" >> $LOG | ||
| 33 | notify-send "beginning $LOCATION backup" | ||
| 34 | |||
| 35 | # Backup root partition | ||
| 36 | sudo $SUDO_OPTS borg create $CREATE_OPTS \ | ||
| 37 | --exclude '/dev/*' \ | ||
| 38 | --exclude '/proc/*' \ | ||
| 39 | --exclude '/sys/*' \ | ||
| 40 | --exclude '/tmp/*' \ | ||
| 41 | --exclude '/mnt/*' \ | ||
| 42 | --exclude '/media/*' \ | ||
| 43 | "/mnt/$LOCATION-backup/$(hostname)::root-{now:%Y-%m-%d}" / 2>>$LOG | ||
| 44 | check_rc $? | ||
| 45 | |||
| 46 | # Backup boot parition | ||
| 47 | sudo $SUDO_OPTS borg create $CREATE_OPTS \ | ||
| 48 | "/mnt/$LOCATION-backup/$(hostname)::boot-{now:%Y-%m-%d}" /boot 2>>$LOG | ||
| 49 | check_rc $? | ||
| 50 | |||
| 51 | # Send notifications based on return codes of archives | ||
| 52 | |||
| 53 | [ $WARNING -eq 1 ] && notify-send "One or more archives produced a warning" \ | ||
| 54 | "Please check the log at $LOG" | ||
| 55 | |||
| 56 | [ $ERROR -eq 1 ] && notify-send -u critical \ | ||
| 57 | "One or more archives produced an error and was unable to complete" \ | ||
| 58 | "Please check the log at $LOG" | ||
| 59 | |||
| 60 | [ $WARNING -eq 0 -a $ERROR -eq 0 ] && notify-send "$LOCATION backup complete" | ||
