summaryrefslogtreecommitdiff
path: root/config/borg-backup.nix
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-05-21 15:30:53 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-05-21 15:30:53 -0400
commitec351701d800c8d5aa9c2d03caae43cc880a19b4 (patch)
tree73c86823a38b7d510e7b1b22b4c54cb06b8f5ac8 /config/borg-backup.nix
parent701ec03ecf27164cf6cfd03deaacebb8ded7a900 (diff)
shape: Start backup job
Diffstat (limited to 'config/borg-backup.nix')
-rw-r--r--config/borg-backup.nix39
1 files changed, 39 insertions, 0 deletions
diff --git a/config/borg-backup.nix b/config/borg-backup.nix
new file mode 100644
index 0000000..40c8fd9
--- /dev/null
+++ b/config/borg-backup.nix
@@ -0,0 +1,39 @@
+# To initialize repo
+# borg init --encryption=keyfile /staging/backup
+# Key file also stored in pass
+{ config, lib, pkgs, ... }:
+let
+ repo = /staging/backup
+in
+{
+ systemd.services.borg-backup = {
+ description = "Run backups.";
+ path = with pkgs [ borgbackup ];
+ startAt = "*-*-* 02:30:00";
+ environment = {
+ BORG_KEYS_DIR = "/opt/secret/borg-backup-keys/";
+ REPOSITORY = "/staging/backup";
+ };
+ serviceConfig = {
+ RemainAfterExit = true;
+ };
+ script = ''
+ echo "Creating backup"
+ borg create -v --stats \
+ --compression lzma,6 \
+ $REPOSITORY::'storage-{now:%Y-%m-%d}' \
+ /storage
+
+ borg create -v --stats \
+ --compression lzma,6 \
+ $REPOSITORY::'{hostname}-{now:%Y-%m-%d}' \
+ /opt /home
+
+ echo "Pruning old versions"
+ borg prune -v --list $REPOSITORY --prefix 'storage-' \
+ --keep-daily=7 --keep-weekly=4 --keep-monthly=6
+ borg prune -v --list $REPOSITORY --prefix '{hostname}-' \
+ --keep-daily=7 --keep-weekly=4 --keep-monthly=6
+ '';
+ };
+};