69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# Setting this, so the repo does not need to be given on the commandline:
 | 
						|
export BORG_REPO=~borgbackup/backup
 | 
						|
PUSH_KEY={{ backup.pushkey }}
 | 
						|
 | 
						|
# See the section "Passphrase notes" for more infos.
 | 
						|
#export BORG_PASSPHRASE='XYZl0ngandsecurepa_55_phrasea&&123'
 | 
						|
 | 
						|
# 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 "Initialize Repo"
 | 
						|
borg init -e none
 | 
						|
 | 
						|
info "Starting backup"
 | 
						|
 | 
						|
 | 
						|
# Backup the most important directories into an archive named after
 | 
						|
# the machine this script is currently running on:
 | 
						|
 | 
						|
borg create                         \
 | 
						|
    --verbose                       \
 | 
						|
    --filter AME                    \
 | 
						|
    --list                          \
 | 
						|
    --stats                         \
 | 
						|
    --show-rc                       \
 | 
						|
    --compression none              \
 | 
						|
    --exclude-caches                \
 | 
						|
    --one-file-system		    \
 | 
						|
    ::'{hostname}-{now}'            \
 | 
						|
    /var/lib/docker/volumes
 | 
						|
 | 
						|
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               \
 | 
						|
 | 
						|
chown -R borgbackup ~borgbackup
 | 
						|
 | 
						|
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"
 | 
						|
    /usr/bin/curl -fsS -m 10 --retry 5 -o /dev/null https://monitor.chaoswg.org/api/push/${PUSH_KEY}?msg=OK&ping=
 | 
						|
elif [ ${global_exit} -eq 1 ]; then
 | 
						|
    info "Backup and/or Prune finished with warnings"
 | 
						|
    /usr/bin/curl -fsS -m 10 --retry 5 -o /dev/null https://monitor.chaoswg.org/api/push/${PUSH_KEY}?msg=OK&ping=
 | 
						|
else
 | 
						|
    info "Backup and/or Prune finished with errors"
 | 
						|
fi
 | 
						|
 | 
						|
exit ${global_exit}
 |