96 lines
2.0 KiB
Bash
Executable File
96 lines
2.0 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 \
|
|
$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
|