diff options
Diffstat (limited to 'config/borg-backup.nix')
-rw-r--r-- | config/borg-backup.nix | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/config/borg-backup.nix b/config/borg-backup.nix index 0c8ebb4..5b45358 100644 --- a/config/borg-backup.nix +++ b/config/borg-backup.nix @@ -4,9 +4,10 @@ { config, lib, pkgs, ... }: let repo = "/staging/backup"; - probe = { + probe = rec { path = "/storage/archive/backup-probe.txt"; repo = "storage"; + repo_path = lib.removePrefix "/" path; }; in { @@ -27,8 +28,8 @@ in rsync -Hax orbekk@raigh.orbekk.com:linoquotes-backup.sqlite /storage/archive/linoquotes/ echo "Writing probe file at ${probe.path}" - date +%s > "${probe.path}.tmp" - mv "${probe.path}.tmp" "${probe.path}" + # No need for atomic move, because the script terminates if this fails. + date +%s > "${probe.path}" echo "Creating backup" borg create -v --stats \ @@ -52,4 +53,21 @@ in echo "Success." ''; }; + + systemd.services.backup-prober = { + description = "Find latest backup probe timestamp."; + path = with pkgs; [ borgbackup rsync openssh moreutils ]; + startAt = "06:30"; + environment = { + BORG_KEYS_DIR = "/opt/secret/borg-backup-keys/"; + REPOSITORY = repo; + }; + script = '' + last_repo="$(borg list $REPOSITORY -P ${probe.repo} --last 1 --short)" + target="${config.orbekk.monitoring-server.textFileDir}/backup_probe.prom" + timestamp=$(borg extract --stdout $REPOSITORY::"$last_repo" "${probe.repo_path}") + echo "backup_probe_timestamp_seconds $timestamp" > "$target.next" + mv "$target.next" "$target" + ''; + }; } |