--- a/bin/ftbackup Fri Apr 29 17:42:04 2011 +0200
+++ b/bin/ftbackup Fri Apr 29 17:42:18 2011 +0200
@@ -573,20 +573,26 @@
sub unlink_old_dumps($$) {
my ($ftp, $keep) = @_;
my @dumps;
+
foreach ($ftp->ls) {
/^(?<date>.*)\.(?<level>\d+)$/ or next;
push @{ $dumps[$+{level}] } =>
{ file => $_, date => $+{date}, stamp => str2time($+{date}) };
}
+
# sort the level 0 dumps by date and remove all but the last $keep
# ones.
# if we found level 0 dumps, we remove all level 1+ dumps older than
# the oldest level 0 dump we'll remove
- @{ $dumps[0] } = sort { $a->{stamp} <=> $b->{stamp} } @{ $dumps[0] };
+ my @unlink;
+
+ if ($dumps[0]) {
+ @{ $dumps[0] } = sort { $a->{stamp} <=> $b->{stamp} } @{ $dumps[0] };
+ @unlink = splice(@{ $dumps[0] }, 0, -$keep);
+ }
### @dumps
- my @unlink = splice(@{ $dumps[0] }, 0, -$keep);
if ($dumps[1]) {
if (!@{ $dumps[0] }) { push @unlink, @{ @dumps[1 .. $#dumps] } }