|
|
@ -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? |
|
|
|
} |
|
|
|