diff options
author | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2017-05-21 15:30:53 -0400 |
---|---|---|
committer | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2017-05-21 15:30:53 -0400 |
commit | ec351701d800c8d5aa9c2d03caae43cc880a19b4 (patch) | |
tree | 73c86823a38b7d510e7b1b22b4c54cb06b8f5ac8 /config | |
parent | 701ec03ecf27164cf6cfd03deaacebb8ded7a900 (diff) |
shape: Start backup job
Diffstat (limited to 'config')
-rw-r--r-- | config/borg-backup.nix | 39 |
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 + ''; + }; +}; |