about summary refs log tree commit diff
path: root/bundles/restic-backup/files/resticbackup
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/restic-backup/files/resticbackup')
-rw-r--r--bundles/restic-backup/files/resticbackup36
1 files changed, 36 insertions, 0 deletions
diff --git a/bundles/restic-backup/files/resticbackup b/bundles/restic-backup/files/resticbackup
new file mode 100644
index 0000000..af61d7e
--- /dev/null
+++ b/bundles/restic-backup/files/resticbackup
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -eu
+
+backup_includes=/etc/restic/includes
+backup_excludes=/etc/restic/excludes
+backup_tag=foobar
+backup_keep=1m
+
+main() {
+	# remove stale locks
+	resticw unlock
+
+	# run backup
+	resticw backup \
+		--one-file-system \
+		--files-from "${backup_includes}" \
+		--exclude-file "${backup_excludes}" \
+		--tag "${backup_tag}"
+
+	# prune backups older than $backup_keep duration
+	resticw forget \
+		--keep-within "${backup_keep}" \
+		--prune \
+		--group-by "paths,tags" \
+		--tag "${backup_tag}"
+
+	# TODO: restic check
+	# TODO: dump stats to file in metrics format to /run/prom/restic
+}
+
+exit_hook() {
+	resticw unlock
+}
+trap exit_hook INT EXIT
+
+main