summaryrefslogtreecommitdiff
path: root/stdlib/backups/borg/borg-script-template
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/backups/borg/borg-script-template')
-rw-r--r--stdlib/backups/borg/borg-script-template27
1 files changed, 27 insertions, 0 deletions
diff --git a/stdlib/backups/borg/borg-script-template b/stdlib/backups/borg/borg-script-template
new file mode 100644
index 0000000..c09c297
--- /dev/null
+++ b/stdlib/backups/borg/borg-script-template
@@ -0,0 +1,27 @@
+#!/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