Remove stale locks first, better logging
... | ... | @@ -7,21 +7,28 @@ source common.sh |
# Let's just backup $TODAY, ignoring symlink snaps (zero updates) as well | ||
EXCLUDE_LIST=`mktemp` | ||
RESTIC_LOGFILE=`mktemp` | ||
$RESTIC snapshots | ||
if [[ $? -ne 0 ]]; then | ||
echo "Lock detected, attempting to unlock" | tee -a $RESTIC_LOGFILE | ||
$RESTIC unlock 2>&1 | tee -a $RESTIC_LOGFILE | ||
fi | ||
find $SOURCE -mindepth 1 -maxdepth 1 \( -type l -o -type d \) ! -path "*$TODAY" > $EXCLUDE_LIST | ||
$RESTIC backup --tag $TODAY --exclude-file=$EXCLUDE_LIST $SOURCE &>> $RESTIC_LOGFILE | ||
echo "Performing backup..." | ||
$RESTIC backup --tag $TODAY --exclude-file=$EXCLUDE_LIST $SOURCE 2>&1 | tee -a $RESTIC_LOGFILE | ||
echo "Backup concluded with exit code $?" | ||
|
||
rm -f $EXCLUDE_LIST | ||
# Check if there are any snapshots to forget/purge | ||
echo "Checking for old snapshots..." | ||
SNAPS_TO_REMOVE=`$RESTIC forget --dry-run --group-by paths --keep-within $PRUNE_SNAPSHOTS_OLDER_THAN | grep "remove .* snapshots" | awk '{print $2}'` | ||
if [ ! -z $SNAPS_TO_REMOVE ]; then | ||
echo "Found $SNAPS_TO_REMOVE snapshots that are older than $PRUNE_SNAPSHOTS_OLDER_THAN. Purging from restic store ..." >> $RESTIC_LOGFILE | ||
$RESTIC unlock &>> $RESTIC_LOGFILE | ||
$RESTIC forget --group-by paths --keep-within $PRUNE_SNAPSHOTS_OLDER_THAN --prune &>> $RESTIC_LOGFILE | ||
echo "Found $SNAPS_TO_REMOVE snapshots that are older than $PRUNE_SNAPSHOTS_OLDER_THAN. Purging from restic store ..." 2>&1 | tee -a $RESTIC_LOGFILE | ||
$RESTIC unlock 2>&1 | tee -a $RESTIC_LOGFILE | ||
$RESTIC forget --group-by paths --keep-within $PRUNE_SNAPSHOTS_OLDER_THAN --prune 2>&1 | tee -a $RESTIC_LOGFILE | ||
fi | ||
# Just in case the log is too big and the mail doesn't make it... | ||
cat $RESTIC_LOGFILE | ||
echo "Sending email of $RESTIC_LOGFILE to admins" | ||
export TODAY="$TODAY" | ||
... | ... |