#! /usr/bin/env bash set -e if [ -z "$1" ] then REPO="nas:~/borg" LOCAL=false else DISK="$1" LOCAL=true fi if $LOCAL then #check if unlocked if [ -e "/dev/disk/by-label/$DISK" ] then echo "Disk already unlocked" else udisksctl unlock -b /dev/disk/by-partlabel/$DISK --key-file "$HOME/.keys/luks.key" fi #check if mounted if [ -e "/run/media/$USER/$DISK" ] then echo "Disk already mounted" else udisksctl mount -b /dev/disk/by-label/$DISK fi REPO="/run/media/$USER/$DISK/borg" fi ARCHIVE="$REPO::$HOSTNAME-$(date +%Y-%m-%dT%T)" SRC="$HOME" BORG_PASSPHRASE="" echo "Enter passphrase for $REPO:" read -s BORG_PASSPHRASE export BORG_PASSPHRASE borg create --progress --stats --exclude-caches \ --exclude $HOME/VirtualBox\ VMs \ --exclude $HOME/.cache \ --exclude $HOME/Downloads \ --exclude $HOME/Photos \ --exclude $HOME/Videos \ --exclude $HOME/tmp \ --exclude $HOME/.local/Steam \ --exclude $HOME/.local/share/Steam \ --exclude $HOME/Audio \ $ARCHIVE $SRC && if ! $LOCAL; then date +%s > $HOME/.lastbak; fi borg prune --stats --list --keep-within 1d --glob-archives "$HOSTNAME*" \ -d 7 \ -w 4 \ -m 12 \ -y 3 \ $REPO if $LOCAL && nmcli connection show --active | grep '^vt-net' > /dev/null then echo "backing up Photo archive..." cd "/run/media/$USER/$DISK/photos" git annex sync # set +e # git annex mirror --from=origin git annex get # set -e git annex sync echo "backing up Audio archive..." cd "/run/media/$USER/$DISK/audio" git annex sync ### git annex mirror --from=origin git annex get git annex sync cd / udisksctl unmount -b "/dev/disk/by-label/$DISK" udisksctl lock -b "/dev/disk/by-partlabel/$DISK" fi