diff --git a/btrbk b/btrbk index e0489c1..5d34c95 100755 --- a/btrbk +++ b/btrbk @@ -2714,38 +2714,38 @@ sub schedule(@) foreach my $href (@sorted_schedule) { if($preserve_min_q) { if($preserve_min_q eq 'all') { - $href->{preserve} ||= "preserve min: all"; + $href->{preserve} = "preserve min: all"; } elsif($preserve_min_q eq 'h') { - $href->{preserve} ||= "preserve min: $href->{delta_hours} hours ago" if($href->{delta_hours} <= $preserve_min_n); + $href->{preserve} = "preserve min: $href->{delta_hours} hours ago" if($href->{delta_hours} <= $preserve_min_n); } elsif($preserve_min_q eq 'd') { - $href->{preserve} ||= "preserve min: $href->{delta_days} days ago" if($href->{delta_days} <= $preserve_min_n); + $href->{preserve} = "preserve min: $href->{delta_days} days ago" if($href->{delta_days} <= $preserve_min_n); } elsif($preserve_min_q eq 'w') { - $href->{preserve} ||= "preserve min: $href->{delta_weeks} weeks ago" if($href->{delta_weeks} <= $preserve_min_n); + $href->{preserve} = "preserve min: $href->{delta_weeks} weeks ago" if($href->{delta_weeks} <= $preserve_min_n); } elsif($preserve_min_q eq 'm') { - $href->{preserve} ||= "preserve min: $href->{delta_months} months ago" if($href->{delta_months} <= $preserve_min_n); + $href->{preserve} = "preserve min: $href->{delta_months} months ago" if($href->{delta_months} <= $preserve_min_n); } elsif($preserve_min_q eq 'y') { - $href->{preserve} ||= "preserve min: $href->{delta_years} years ago" if($href->{delta_years} <= $preserve_min_n); + $href->{preserve} = "preserve min: $href->{delta_years} years ago" if($href->{delta_years} <= $preserve_min_n); } } $first_in_delta_hours{$href->{delta_hours}} //= $href; } if($preserve_min_q && ($preserve_min_q eq 'latest') && (scalar @sorted_schedule)) { my $href = $sorted_schedule[-1]; - $href->{preserve} ||= 'preserve min: latest'; + $href->{preserve} = 'preserve min: latest'; } # filter hourly, daily, weekly, monthly, yearly foreach (sort {$b <=> $a} keys %first_in_delta_hours) { my $href = $first_in_delta_hours{$_} || die; - if($preserve_hourly && (($preserve_hourly eq 'all') || $href->{delta_hours} <= $preserve_hourly)) { - $href->{preserve} ||= "preserved hourly: first present of hour, $href->{delta_hours} hours ago"; + if($preserve_hourly && (($preserve_hourly eq 'all') || ($href->{delta_hours} <= $preserve_hourly))) { + $href->{preserve} = "preserve hourly: first of hour, $href->{delta_hours} hours ago"; } $first_in_delta_days{$href->{delta_days}} //= $href; } foreach (sort {$b <=> $a} keys %first_in_delta_days) { my $href = $first_in_delta_days{$_} || die; if($preserve_daily && (($preserve_daily eq 'all') || ($href->{delta_days} <= $preserve_daily))) { - $href->{preserve} ||= "preserved daily: first present of day, $href->{delta_days} days ago"; + $href->{preserve} = "preserve daily: first of day, $href->{delta_days} days ago"; } $first_in_delta_weeks{$href->{delta_weeks}} //= $href; } @@ -2753,21 +2753,21 @@ sub schedule(@) foreach (sort {$b <=> $a} keys %first_in_delta_weeks) { my $href = $first_in_delta_weeks{$_} || die; if($preserve_weekly && (($preserve_weekly eq 'all') || ($href->{delta_weeks} <= $preserve_weekly))) { - $href->{preserve} ||= "preserved weekly: $href->{delta_weeks} weeks ago, $href->{err_days_text}"; + $href->{preserve} = "preserve weekly: $href->{delta_weeks} weeks ago, $href->{err_days_text}"; } $first_weekly_in_delta_months{$href->{delta_months}} //= $href; } foreach (sort {$b <=> $a} keys %first_weekly_in_delta_months) { my $href = $first_weekly_in_delta_months{$_} || die; if($preserve_monthly && (($preserve_monthly eq 'all') || ($href->{delta_months} <= $preserve_monthly))) { - $href->{preserve} ||= "preserved monthly: first present weekly of month $href->{month} ($href->{delta_months} months ago, $href->{err_days_text})"; + $href->{preserve} = "preserve monthly: first weekly of month $href->{month} ($href->{delta_months} months ago, $href->{err_days_text})"; } $first_monthly_in_delta_years{$href->{delta_years}} //= $href; } foreach (sort {$b <=> $a} keys %first_monthly_in_delta_years) { my $href = $first_monthly_in_delta_years{$_} || die; if($preserve_yearly && (($preserve_yearly eq 'all') || ($href->{delta_years} <= $preserve_yearly))) { - $href->{preserve} ||= "preserved yearly: first present weekly of year $href->{year} ($href->{delta_years} years ago, $href->{err_days_text})"; + $href->{preserve} = "preserve yearly: first weekly of year $href->{year} ($href->{delta_years} years ago, $href->{err_days_text})"; } } @@ -2799,7 +2799,7 @@ sub schedule(@) push @$results_list, { %result_base, action => "delete", value => $href->{value}, - } if($results_list);; + } if($results_list); } } DEBUG "Preserving " . @preserve . "/" . $count_defined . " items"; @@ -2817,11 +2817,12 @@ sub format_preserve_matrix($@) my @out; my %trans = ( h => 'hours', d => 'days', w => 'weeks', m => 'months', y => 'years' ); if($preserve->{min_q} && ($preserve->{min_q} eq 'all')) { - push @out, "preserving all forever"; + push @out, "all forever"; } else { - push @out, "preserving all within $preserve->{min_n} $trans{$preserve->{min_q}}" if($preserve->{min_n} && $preserve->{min_q}); - push @out, "first present daily for $preserve->{d} days" if($preserve->{d}); + push @out, "latest" if($preserve->{min_q} && ($preserve->{min_q} eq 'latest')); + push @out, "all within $preserve->{min_n} $trans{$preserve->{min_q}}" if($preserve->{min_n} && $preserve->{min_q}); + push @out, "first of day for $preserve->{d} days" if($preserve->{d}); unless($preserve->{d} && ($preserve->{d} eq 'all')) { push @out, "first daily in week (starting on $preserve->{dow}) for $preserve->{w} weeks" if($preserve->{w}); unless($preserve->{w} && ($preserve->{w} eq 'all')) { @@ -2832,7 +2833,7 @@ sub format_preserve_matrix($@) } } } - return join('; ', @out); + return 'preserving ' . join('; ', @out); } my $s = ""; @@ -2840,6 +2841,7 @@ sub format_preserve_matrix($@) $s = '*d+'; } else { + # $s .= '.+' if($preserve->{min_q} && ($preserve->{min_q} eq 'latest')); $s .= $preserve->{min_n} . $preserve->{min_q} . '+' if($preserve->{min_n} && $preserve->{min_q}); foreach (qw(h d w m y)) { my $val = $preserve->{$_} // 0; @@ -4324,7 +4326,7 @@ MAIN: foreach my $svol (vinfo_subsection($sroot, 'subvolume')) { my $snapdir_ts = config_key($svol, "snapshot_dir", postfix => '/') // ""; my $snapshot_basename = config_key($svol, "snapshot_name") // die; - my $preserve_latest_snapshot = $svol->{SNAPSHOT_CREATED} ? 0 : "preserve forced: latest in list"; + my $preserve_latest_snapshot = $svol->{SNAPSHOT_CREATED} ? 0 : "preserve forced: latest in list (no snapshot created)"; my $preserve_latest_backup = $preserve_latest_snapshot; my $target_aborted = 0;