Quick Restic Tip: Backup when suspending laptop with systemd
I love restic. It’s easy, fast and reliable with a ton of nice features and well documented. If you need to restore a backup it’s probably very stressful. Therefor it’s important to do backups regularly.
Through the day there’s often not a good time to backup your data. One saturday evening I was thinking about it and an idea popped into my head: Every evening I suspend the laptop. Maybe I can intercept that and perform my backup before sending my laptop into standby?
Yes – you can run scripts before the system suspends easily with systemd!
Just place your script in /usr/lib/systemd/system-sleep/ and ensure it’s executable.
#!/bin/bash
if [ "${1}" == "pre" ];
then
# Execute your backup script
/bin/backup
elif [ "${1}" == "post" ]; then
exit 0
fi
For easier mounting I added a partition label to the external disk:
e2label /dev/sdb1 external_backup
Now we can check in our backup script /bin/backup – be sure to place it on an encrypted partition. If we can mount our external disk by the label continue with the backup. If not abort the script.
#!/bin/bash
mount LABEL="external_backup" /backup/ # mount the external disk labelled with 'external_backup'
retVal=$?
# when mount fails the exit code is not equal 0
if [ $retVal -ne 0 ]; then
echo "Cannot mount disk, aborting"
exit 0
fi
# perform the actual backup script
restic -r /backup/REPO --verbose backup YOUR_DIR_TO_BACKUP --password-file <(echo YOUR_BACKUP_PW)
umount /backup