prune backups older than 3 days
This commit is contained in:
parent
eb182bb1e7
commit
00494736d1
3 changed files with 48 additions and 1 deletions
|
@ -1,5 +1,5 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
imports = [ ];
|
imports = [ ./resources/prune-backup.nix ];
|
||||||
|
|
||||||
networking.hostId = "cdab8473";
|
networking.hostId = "cdab8473";
|
||||||
networking.hostName = "varda"; # Define your hostname.
|
networking.hostName = "varda"; # Define your hostname.
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
|
||||||
# System settings and services.
|
# System settings and services.
|
||||||
mySystem = {
|
mySystem = {
|
||||||
purpose = "Production";
|
purpose = "Production";
|
||||||
|
|
24
nixos/hosts/varda/resources/prune-backup.nix
Normal file
24
nixos/hosts/varda/resources/prune-backup.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cleanupScript = pkgs.writeScript "cleanup-backups.sh" (builtins.readFile ./prune-backups.sh);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.timers.cleanup-backups = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.cleanup-backups = {
|
||||||
|
script = "${cleanupScript}";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "forgejo";
|
||||||
|
StandardOutput = "journal+console";
|
||||||
|
StandardError = "journal+console";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
nixos/hosts/varda/resources/prune-backups.sh
Normal file
22
nixos/hosts/varda/resources/prune-backups.sh
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Set the backup directory
|
||||||
|
BACKUP_DIR="/var/lib/forgejo/dump"
|
||||||
|
|
||||||
|
# Keep the 3 most recent backups
|
||||||
|
KEEP_NUM=3
|
||||||
|
|
||||||
|
echo "Starting backup cleanup process..."
|
||||||
|
echo "Keeping the $KEEP_NUM most recent backups in $BACKUP_DIR"
|
||||||
|
|
||||||
|
# Find all backup files, sort by modification time (newest first),
|
||||||
|
# skip the first 3, and delete the rest
|
||||||
|
find "$BACKUP_DIR" -type f -name "forgejo-dump-*" -print0 |
|
||||||
|
sort -z -t_ -k2 -r |
|
||||||
|
tail -z -n +$((KEEP_NUM + 1)) |
|
||||||
|
while IFS= read -r -d '' file; do
|
||||||
|
echo "Deleting: $file"
|
||||||
|
rm -f "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Cleanup complete. Deleted all but the $KEEP_NUM most recent backups."
|
Loading…
Reference in a new issue