]> lifelog.hopto.org Git - wb-shell-scripts.git/commitdiff
cron job to run every day to keep latest backups only.
authorWill Budic <redacted>
Thu, 17 Jul 2025 14:33:34 +0000 (00:33 +1000)
committerWill Budic <redacted>
Thu, 17 Jul 2025 14:33:34 +0000 (00:33 +1000)
delete_older_backups.pl [new file with mode: 0755]

diff --git a/delete_older_backups.pl b/delete_older_backups.pl
new file mode 100755 (executable)
index 0000000..c63efc4
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/env perl
+use DateTime;
+use File::stat;
+use feature 'say';
+
+
+my ($BACKUPS, $PREFIX, $DAYS) = ('/home/will/backups','nomad-', 8);
+
+my $dt = DateTime->now(time_zone => "local");
+my $dtBack = $dt -> subtract(days => $DAYS);
+
+opendir my($dh),$BACKUPS or die WHITE."Couldn't open dir '$BACKUPS':".RED." $!";
+my @files = grep {   !/^\./ && /^$PREFIX/ } readdir($dh);
+closedir $dh;
+
+say $dt->strftime("%Y-%m-%d %H:%M")." "."Files sel: ".@files." ";
+exit unless @files > 2;
+
+
+delete_extras();
+disk_space("/");
+
+sub disk_space {
+    my $dir = shift;
+    my $date = $dt->strftime("%Y-%m-%d %H:%M");
+    my $result = `df -h / |tail -n 1 | awk '{print "$date Dir: $dir Used: "\$3, \$5, "Avail:" \$4, "Cap: " \$2}'`; 
+       $result =~ s/\s+$//g;
+   say $result;
+}
+
+sub delete_extras {
+    foreach my $file (sort @files){
+            my  $info = stat("$BACKUPS/$file");
+            if ($info->mtime < $dtBack->epoch){
+                unlink "$BACKUPS/$file";
+                say scalar localtime $info->mtime,  "  Deleted: $file";
+            }
+    }
+}
+
+
+ exit;