diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2018-05-19 08:17:47 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2018-05-19 08:17:47 -0300 |
commit | cfe68b9c2da2ff48171e2bbdb8988b92f7f41ee1 (patch) | |
tree | aa8f650ccb6a7d33b793bb6451d8447da481f176 /templates | |
parent | ef69b77ccada9e983cd8e79ed92c90a84a8ff9fe (diff) | |
download | puppet-backup-cfe68b9c2da2ff48171e2bbdb8988b92f7f41ee1.tar.gz puppet-backup-cfe68b9c2da2ff48171e2bbdb8988b92f7f41ee1.tar.bz2 |
Adds borg action and misc changes
Diffstat (limited to 'templates')
-rw-r--r-- | templates/borg.sh.erb | 115 | ||||
-rw-r--r-- | templates/duplicity.sh.erb (renamed from templates/duplicity.conf.erb) | 0 |
2 files changed, 115 insertions, 0 deletions
diff --git a/templates/borg.sh.erb b/templates/borg.sh.erb new file mode 100644 index 0000000..3eddd87 --- /dev/null +++ b/templates/borg.sh.erb @@ -0,0 +1,115 @@ +#!/bin/sh +# Adapted from https://borgbackup.readthedocs.io/en/stable/quickstart.html#automating-backups + +export SSH_SERVER="<%= @user %>@<%= @host %>" +export SSH_PORT="<%= @port %>" + +export HOSTNAME=`cat /etc/hostname` + +# Setting this, so the repo does not need to be given on the commandline: +export BORG_REPO=ssh://$SSH_SERVER:$SSH_PORT//var/backups/remote/$HOSTNAME/borg + +# Setting this, so you won't be asked for your repository passphrase: +export BORG_PASSPHRASE='<%= @password %>' +# or this to ask an external program to supply the passphrase: +#export BORG_PASSCOMMAND='pass show backup' + +# some helpers and error handling: +#info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } +trap 'info $( date ) Backup interrupted >&2; exit 2' INT TERM + +# Check +if [ "$1" == "--check" ]; then + borg list + exit $? +fi + +# Initialize +if ! ssh $SSH_SERVER -p $SSH_PORT test -f /var/backups/remote/$HOSTNAME/borg/config; then + info "Initializing borg repository at ssh://$SSH_SERVER:$SSH_PORT//var/backups/remote/$HOSTNAME/borg..." + borg init --encryption=<%= @encryption %> ssh://$SSH_SERVER:$SSH_PORT//var/backups/remote/$HOSTNAME/borg + + init_exit=$? + + if [ "$init_exit" != "0" ]; then + fatal "Error initializing repository" + fi +fi + +# Backup the most important directories into an archive named after +# the machine this script is currently running on: + +info "Starting backup..." + +borg create \ + --verbose \ + --filter AME \ + --list \ + --stats \ + --show-rc \ + --compression lz4 \ + --exclude-caches \ + --exclude '/home/*/.cache/*' \ + --exclude '/var/cache/*' \ + --exclude '/var/tmp/*' \ + --exclude '/var/backups/remote' \ + --exclude '/var/backups/duplicity' \ + --exclude '/var/backups/restore' \ + --exclude '/var/cache' \ + --exclude '/var/vservers' \ + --exclude '/var/chroot' \ + --exclude '/root/.cache' \ + --exclude '/var/lib/dpkg' \ + --exclude '/var/lib/apt' \ + --exclude '/var/lib/aptitude' \ + --exclude '/var/sites/backups' \ + --exclude '/var/data/crypt' \ + --exclude '/var/data/backups' \ + --exclude '/var/data/cache' \ + ::'{hostname}-{now}' \ + /etc \ + /home \ + /root \ + /var \ + + backup_exit=$? + +if [ "$backup_exit" != "0" ]; then + fatal "Error creating snapshot" +fi + +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 <%= @keepdaily %> \ + --keep-weekly <%= @keepweekly %> \ + --keep-monthly <%= @keepmonthly %> \ + + prune_exit=$? + +if [ "$prune_exit" != "0" ]; then + fatal "Error pruning repository" +fi + +# use highest exit code as global exit code +#global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) +# +#if [ ${global_exit} -eq 1 ]; +#then +# info "Backup and/or Prune finished with a warning" +#fi +# +#if [ ${global_exit} -gt 1 ]; +#then +# info "Backup and/or Prune finished with an error" +#fi +# +#exit ${global_exit} diff --git a/templates/duplicity.conf.erb b/templates/duplicity.sh.erb index 846f9de..846f9de 100644 --- a/templates/duplicity.conf.erb +++ b/templates/duplicity.sh.erb |