gonf/stdlib/backups/borg/borg-script-template

27 lines
543 B
Bash

#!/usr/bin/env bash
set -euo pipefail
on_exit() {
exit $?
}
trap on_exit EXIT
archiveName="%s-%s-$(date +%%Y-%%m-%%dT%%H:%%M:%%S)"
archiveSuffix=".failed"
# Run borg init if the repo doesn't exist yet
if ! borg list > /dev/null; then
borg init --encryption none
fi
(
borg create \
--compression auto,zstd \
"::${archiveName}${archiveSuffix}" \
'%s'
)
borg rename "::${archiveName}${archiveSuffix}" "${archiveName}"
borg prune \
--keep-daily=14 --keep-monthly=3 --keep-weekly=4 \
--glob-archives '%s-%s*'
borg compact