Browse Source

add backup script, akina to moria via crimespoon

requires a ssh key authorized to postgres@akina on crimespoon
main
Leonora Tindall 1 year ago
parent
commit
47a319eac8
Signed by: nora GPG Key ID: 7A8B52EC67E09AAF
  1. 26
      hosts/crimespoon/configuration.nix

26
hosts/crimespoon/configuration.nix

@ -68,6 +68,32 @@
timerConfig.OnCalendar="*-*-* 2:00:00";
};
# Enable backing up Akina Postgres DB to Akina via rsync
systemd.services.akina_rsync_backup = {
serviceConfig.Type = "oneshot";
path = with pkgs; [ openssh rsync coreutils ];
script = ''
set -e
BACKUP_FILENAME=pg_dumpall-$(hostname)-$(date --iso-8601).sql.gz
ssh postgres@nora.codes -i ~/.ssh/crimespoon-akina-backup-key "pg_dumpall --clean | gzip > $BACKUP_FILENAME"
scp -i ~/.ssh/crimespoon-akina-backup-key postgres@nora.codes:$BACKUP_FILENAME ./$BACKUP_FILENAME
ssh postgres@nora.codes -i ~/.ssh/crimespoon-akina-backup-key "rm $BACKUP_FILENAME"
rsync -a --delete $BACKUP_FILENAME moria.local::CRIMESPOON/akina/$BACKUP_FILENAME
rm $BACKUP_FILENAME
'';
};
systemd.timers.akina_rsync_backup = {
wantedBy = [ "timers.target" ];
partOf = [ "akina_rsync_backup.service" ];
timerConfig.OnCalendar="Weekly";
};
services.openssh.enable = true;
system.stateVersion = "21.11"; # Did you read the comment?
}

Loading…
Cancel
Save