12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/bin/sh
-
- mount {{ backup_repo_dir }}
-
- # Setting this, so the repo does not need to be given on the commandline:
- export BORG_REPO={{ backup_destination }}
-
- # Setting this, so you won't be asked for your repository passphrase:
- export BORG_PASSPHRASE='{{ backup_borg_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 \
- --verbose \
- --filter AME \
- --stats \
- --show-rc \
- --compression lz4 \
- --exclude-caches \
- {% for path in backup_excludes %}
- --exclude '{{ path }}' \
- {% endfor %}
- ::'{hostname}-{now}' \
- {{ backup_source }} \
-
- 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 {{ backup_daily }} \
- --keep-weekly {{ backup_weekly }} \
- --keep-monthly {{ backup_monthly }} \
-
- prune_exit=$?
-
- # 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
-
- umount -l {{ backup_repo_dir }}
-
- exit ${global_exit}
|