summaryrefslogtreecommitdiff
path: root/scripts/.local/bin/borg-backup
diff options
context:
space:
mode:
authorivan-boikov <ik.boikov@protonmail.com>2021-01-23 11:29:57 +0100
committerivan-boikov <ik.boikov@protonmail.com>2021-01-23 11:29:57 +0100
commit25c63760eb0c995543c9151b446092d17325c562 (patch)
tree1cbb7b5155a3f3b0f9ad204d40fee13925a22dbb /scripts/.local/bin/borg-backup
parente001653460c1343512d940260046704d2387c102 (diff)
Initial commit
Diffstat (limited to 'scripts/.local/bin/borg-backup')
-rwxr-xr-xscripts/.local/bin/borg-backup66
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/.local/bin/borg-backup b/scripts/.local/bin/borg-backup
new file mode 100755
index 0000000..751b78d
--- /dev/null
+++ b/scripts/.local/bin/borg-backup
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Setting this, so the repo does not need to be given on the commandline:
+export BORG_REPO=ssh://pi@192.168.3.1/media/nas/borgbackup
+# See the section "Passphrase notes" for more infos.
+#export BORG_PASSPHRASE='XYZl0ngandsecurepa_55_phrasea&&123'
+export BORG_PASSCOMMAND="cat $HOME/.borg-backup-passphrase"
+# some helpers and error handling:
+info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
+trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
+info "Starting backup"
+
+# Backup the most important directories into an archive named after
+# the machine this script is currently running on:
+
+borg create \
+ --progress \
+ --filter AME \
+ --list \
+ --stats \
+ --show-rc \
+ --compression zlib,9 \
+ --exclude-caches \
+ --exclude='*build*' \
+ --exclude='*svn*' \
+ --exclude='*temp*' \
+ --exclude='*tmp*' \
+ --exclude='*git*' \
+ --exclude='*log*' \
+ --exclude='*old*' \
+ --exclude='*bak*' \
+ \
+ ::'{hostname}-{now}' \
+ TODO-ADD-SOME-PATHS
+
+backup_exit=$?
+
+info "Pruning repository"
+
+# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
+# archives of THIS machine. The '{hostname}-' prefix is very important to
+# limit prune's operation to this machine's archives and not apply to
+# other machines' archives also:
+
+borg prune \
+ --list \
+ --prefix '{hostname}-' \
+ --show-rc \
+ --keep-daily 7 \
+ --keep-weekly 4 \
+ --keep-monthly 6 \
+
+prune_exit=$?
+
+# use highest exit code as global exit code
+
+global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
+
+if [ ${global_exit} -eq 0 ]; then
+ info "Backup and Prune finished successfully"
+elif [ ${global_exit} -eq 1 ]; then
+ info "Backup and/or Prune finished with warnings"
+else
+ info "Backup and/or Prune finished with errors"
+fi
+
+exit ${global_exit}