Files
dotfiles/borg/.borg/backup.sh

98 lines
2.1 KiB
Bash
Executable File

#! /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 \
--exclude $HOME/nas \
--exclude $HOME/go \
--exclude $HOME/.var/app/com.valvesoftware.Steam \
--exclude $HOME/.config/borg/security/ \
$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 6 \
-y 1 \
$REPO
if $LOCAL
then
SRC=""
if ! nmcli connection show --active | grep '^vt-net' > /dev/null
then
SRC="--from local"
fi
echo "backing up Photo archive..."
cd "/run/media/$USER/$DISK/photos"
git annex sync
# set +e
# git annex mirror --from=origin
git annex get $SRC
# 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 $SRC
git annex sync
cd /
udisksctl unmount -b "/dev/disk/by-label/$DISK"
udisksctl lock -b "/dev/disk/by-partlabel/$DISK"
#else
# echo "Backing up Audo archive..."
# cd "$HOME/Audio"
# git annex copy --to origin > /dev/null
# echo "Backing up Photo archive..."
# cd "$HOME/Photos"
# git annex copy --to origin > /dev/null
fi