# HG changeset patch # User Heiko Schlittermann (CTQ.kx.schlittermann.de) # Date 1304340054 -7200 # Node ID 73e32571b22fa1f77c0186b8671129c70c010e4f # Parent 4dd23211874a4571b303417a4cc9ec67b7e88e3d find optimal backup level if none is specified diff -r 4dd23211874a -r 73e32571b22f bin/ftbackup --- a/bin/ftbackup Mon May 02 14:28:18 2011 +0200 +++ b/bin/ftbackup Mon May 02 14:40:54 2011 +0200 @@ -26,7 +26,7 @@ my $HOSTNAME = hostname; my $NOW = time(); -my $opt_level = 7; +my $opt_level = undef; my $opt_today = strftime("%F", localtime $NOW); my @opt_debug = (); my $opt_verbose = 0; @@ -589,25 +589,25 @@ foreach my $dev (@devs) { - if (defined $opt_level) { - $dev->{level} = $opt_level; - } - elsif (!$dev->{last} + if (!$dev->{last} or not $dev->{last}[0] or $NOW - $dev->{last}[0] > ($cycle * 86_400)) { $dev->{level} = 0; } - else { $dev->{level} = 0 } - - # now we'll see if the level really saves space compared - # with the next lower level - my @estimates; - while ((my $l = $dev->{level}) > 0) { - $estimates[$l] //= get_estimate($dev, $l); - $estimates[$l - 1] //= get_estimate($dev, $l - 1); - last if ($estimates[$l - 1] - $estimates[$l]) / $estimates[$l - 1] >= 0.10; - --$dev->{level}; + elsif (defined $opt_level) { + $dev->{level} = $opt_level + } + else { + my @estimates; + for (my $l = 0; $l < 9; ++$l) { + $estimates[$l] //= get_estimate($dev, $l); + $estimates[$l + 1] //= get_estimate($dev, $l + 1); + if (($estimates[$l] - $estimates[$l + 1]) / $estimates[$l] < 0.1) { + $dev->{level} = $l; + last; + } + } } warn "% $dev->{dev} will use level $dev->{level}\n"; }