#!/usr/bin/perl # # Christopher Lindsey --- Mallorn Computing, Inc. # lindsey@mallorn.com # # Copyright (c) 2008 Christopher Lindsey -- All Rights Reserved use Date::Manip; $basedir = "/mnt/mallorn/backups"; $backupstokeep = 8; opendir(SYSTEM, $basedir); foreach $system (grep { ! /^\./ && -d "$basedir/$_" } readdir(SYSTEM)) { $backupnum = 0; opendir(BACKUP, "$basedir/$system"); foreach $backup (grep { /^\d\d\w\w\w\d\d$/ && -d "$basedir/$system/$_" } readdir(BACKUP)) { $backupnum++; $id = UnixDate($backup, "%s") . "-" . $system; $file{$id} = "$basedir/$system/$backup"; } if ($backupnum > $backupstokeep) { $backupstopurge = $backupnum - $backupstokeep; print "\n$backupstopurge backups to purge for $system:\n\n"; $purged = 0; foreach $timestamp (sort keys %file) { last if $purged >= $backupstopurge; $purged++; print " ", $file{$timestamp}, "\n"; system "rm -rf $file{$timestamp}"; } } undef %file; closedir BACKUP; } closedir SYSTEM;