From 5c9df935636c6b5610a0d1f2bf3ed8dfcd10c856 Mon Sep 17 00:00:00 2001 From: Sam Chudnick Date: Sun, 28 Nov 2021 23:13:19 -0500 Subject: Combined borg-onsite and borg-offsite scripts into a single script that takes an argument to specify the location. Reorganized script to use variables to reduce redundant strings. Added automated retrieval of repository password via pass. Removed --list from borg create options and redirect output to log file. --- .local/bin/backups/assimilate | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 .local/bin/backups/assimilate (limited to '.local/bin/backups/assimilate') diff --git a/.local/bin/backups/assimilate b/.local/bin/backups/assimilate new file mode 100755 index 0000000..0137650 --- /dev/null +++ b/.local/bin/backups/assimilate @@ -0,0 +1,42 @@ +#!/bin/sh +# Full system backup with sudo borg + +# Validate argument - should either be onsite or offsite to specify location +ERRMSG="error: please specify either onsite or offsite" +[ $# -ne 1 ] && echo $ERRMSG && exit 1 +[ "$1" != "onsite" -a "$1" != "offsite" ] && echo $ERRMSG && exit 1 + +# Set variables +LOCATION="$1" +SUDO_OPTS="--preserve-env=BORG_PASSCOMMAND,PASSWORD_STORE_DIR" +CREATE_OPTS="--warning --stats --show-rc --exclude-caches --one-file-system" +LOG="$HOME/.config/borg/log" + +# Hack to get repository passphrase from pass +# The passcommand will be invoked as root, so use sudo to run it as the user calling the script +# who owns the password store. The environmental variable PASSWORD_STORE_DIR is passed through +# SUDO_OPTS to the borg commands, and then passed to this command from the borg command +# by the same means. This allows custom password store locations to work with this script. +export BORG_PASSCOMMAND="sudo $SUDO_OPTS -u $USER pass Borg-Backup/$(hostname)-onsite" + +# Backup root partition +sudo $SUDO_OPTS borg create $CREATE_OPTS \ + --exclude '/dev/*' \ + --exclude '/proc/*' \ + --exclude '/sys/*' \ + --exclude '/tmp/*' \ + --exclude '/mnt/*' \ + --exclude '/media/*' \ + "/mnt/onsite-backup/$(hostname)::root-{now:%Y-%m-%d}" / 2>>$LOG + +# Backup boot parition +sudo $SUDO_OPTS borg create $CREATE_OPTS \ + "/mnt/onsite-backup/$(hostname)::boot-{now:%Y-%m-%d}" /boot 2>>$LOG + +# Backup home partition +sudo $SUDO_OPTS borg create $CREATE_OPTS \ + "/mnt/onsite-backup/$(hostname)::home-{now:%Y-%m-%d}" /home 2>>$LOG + +# Backup var partition +sudo $SUDO_OPTS borg create $CREATE_OPTS \ + "/mnt/onsite-backup/$(hostname)::var-{now:%Y-%m-%d}" /var 2>>$LOG -- cgit v1.2.3