mirror of https://github.com/digint/btrbk
btrbk: change preserve logic: keep FIRST present of hour/day/... instead of LAST
parent
6b07316fef
commit
bd34d9f689
46
btrbk
46
btrbk
|
@ -2634,11 +2634,11 @@ sub schedule(@)
|
||||||
$href->{preserve} ||= $preserve_latest;
|
$href->{preserve} ||= $preserve_latest;
|
||||||
}
|
}
|
||||||
|
|
||||||
my %last_in_delta_hours;
|
my %first_in_delta_hours;
|
||||||
my %last_in_delta_days;
|
my %first_in_delta_days;
|
||||||
my %first_in_delta_weeks;
|
my %first_in_delta_weeks;
|
||||||
my %last_weekly_in_delta_months;
|
my %first_weekly_in_delta_months;
|
||||||
my %last_monthly_in_delta_years;
|
my %first_monthly_in_delta_years;
|
||||||
|
|
||||||
# filter "preserve all within N days/weeks/..."
|
# filter "preserve all within N days/weeks/..."
|
||||||
foreach my $href (@sorted_schedule) {
|
foreach my $href (@sorted_schedule) {
|
||||||
|
@ -2657,21 +2657,21 @@ sub schedule(@)
|
||||||
$href->{preserve} ||= "preserve all: $href->{delta_years} years ago" if($href->{delta_years} <= $preserve_all_n);
|
$href->{preserve} ||= "preserve all: $href->{delta_years} years ago" if($href->{delta_years} <= $preserve_all_n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$last_in_delta_hours{$href->{delta_hours}} = $href;
|
$first_in_delta_hours{$href->{delta_hours}} //= $href;
|
||||||
}
|
}
|
||||||
|
|
||||||
# filter hourly, daily, weekly, monthly, yearly
|
# filter hourly, daily, weekly, monthly, yearly
|
||||||
foreach (sort {$b <=> $a} keys %last_in_delta_hours) {
|
foreach (sort {$b <=> $a} keys %first_in_delta_hours) {
|
||||||
my $href = $last_in_delta_hours{$_} || die;
|
my $href = $first_in_delta_hours{$_} || die;
|
||||||
if($preserve_hourly && (($preserve_hourly eq 'all') || $href->{delta_hours} <= $preserve_hourly)) {
|
if($preserve_hourly && (($preserve_hourly eq 'all') || $href->{delta_hours} <= $preserve_hourly)) {
|
||||||
$href->{preserve} ||= "preserved hourly: last present of hour, $href->{delta_hours} hours ago";
|
$href->{preserve} ||= "preserved hourly: first present of hour, $href->{delta_hours} hours ago";
|
||||||
}
|
}
|
||||||
$last_in_delta_days{$href->{delta_days}} = $href;
|
$first_in_delta_days{$href->{delta_days}} //= $href;
|
||||||
}
|
}
|
||||||
foreach (sort {$b <=> $a} keys %last_in_delta_days) {
|
foreach (sort {$b <=> $a} keys %first_in_delta_days) {
|
||||||
my $href = $last_in_delta_days{$_} || die;
|
my $href = $first_in_delta_days{$_} || die;
|
||||||
if($preserve_daily && (($preserve_daily eq 'all') || ($href->{delta_days} <= $preserve_daily))) {
|
if($preserve_daily && (($preserve_daily eq 'all') || ($href->{delta_days} <= $preserve_daily))) {
|
||||||
$href->{preserve} ||= "preserved daily: last present of day, $href->{delta_days} days ago";
|
$href->{preserve} ||= "preserved daily: first present of day, $href->{delta_days} days ago";
|
||||||
}
|
}
|
||||||
$first_in_delta_weeks{$href->{delta_weeks}} //= $href;
|
$first_in_delta_weeks{$href->{delta_weeks}} //= $href;
|
||||||
}
|
}
|
||||||
|
@ -2681,19 +2681,19 @@ sub schedule(@)
|
||||||
if($preserve_weekly && (($preserve_weekly eq 'all') || ($href->{delta_weeks} <= $preserve_weekly))) {
|
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} ||= "preserved weekly: $href->{delta_weeks} weeks ago, $href->{err_days_text}";
|
||||||
}
|
}
|
||||||
$last_weekly_in_delta_months{$href->{delta_months}} = $href;
|
$first_weekly_in_delta_months{$href->{delta_months}} //= $href;
|
||||||
}
|
}
|
||||||
foreach (sort {$b <=> $a} keys %last_weekly_in_delta_months) {
|
foreach (sort {$b <=> $a} keys %first_weekly_in_delta_months) {
|
||||||
my $href = $last_weekly_in_delta_months{$_} || die;
|
my $href = $first_weekly_in_delta_months{$_} || die;
|
||||||
if($preserve_monthly && (($preserve_monthly eq 'all') || ($href->{delta_months} <= $preserve_monthly))) {
|
if($preserve_monthly && (($preserve_monthly eq 'all') || ($href->{delta_months} <= $preserve_monthly))) {
|
||||||
$href->{preserve} ||= "preserved monthly: last present weekly of month $href->{month} ($href->{delta_months} months ago, $href->{err_days_text})";
|
$href->{preserve} ||= "preserved monthly: first present weekly of month $href->{month} ($href->{delta_months} months ago, $href->{err_days_text})";
|
||||||
}
|
}
|
||||||
$last_monthly_in_delta_years{$href->{delta_years}} = $href;
|
$first_monthly_in_delta_years{$href->{delta_years}} //= $href;
|
||||||
}
|
}
|
||||||
foreach (sort {$b <=> $a} keys %last_monthly_in_delta_years) {
|
foreach (sort {$b <=> $a} keys %first_monthly_in_delta_years) {
|
||||||
my $href = $last_monthly_in_delta_years{$_} || die;
|
my $href = $first_monthly_in_delta_years{$_} || die;
|
||||||
if($preserve_yearly && (($preserve_yearly eq 'all') || ($href->{delta_years} <= $preserve_yearly))) {
|
if($preserve_yearly && (($preserve_yearly eq 'all') || ($href->{delta_years} <= $preserve_yearly))) {
|
||||||
$href->{preserve} ||= "preserved yearly: last present weekly of year $href->{year} ($href->{delta_years} years ago, $href->{err_days_text})";
|
$href->{preserve} ||= "preserved yearly: first present weekly of year $href->{year} ($href->{delta_years} years ago, $href->{err_days_text})";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2747,13 +2747,13 @@ sub format_preserve_matrix($@)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push @out, "preserving all within $preserve->{all_n} $trans{$preserve->{all_q}}" if($preserve->{all_n} && $preserve->{all_q});
|
push @out, "preserving all within $preserve->{all_n} $trans{$preserve->{all_q}}" if($preserve->{all_n} && $preserve->{all_q});
|
||||||
push @out, "last present daily for $preserve->{d} days" if($preserve->{d});
|
push @out, "first present daily for $preserve->{d} days" if($preserve->{d});
|
||||||
unless($preserve->{d} && ($preserve->{d} eq 'all')) {
|
unless($preserve->{d} && ($preserve->{d} eq 'all')) {
|
||||||
push @out, "first daily in week (starting on $preserve->{dow}) for $preserve->{w} weeks" if($preserve->{w});
|
push @out, "first daily in week (starting on $preserve->{dow}) for $preserve->{w} weeks" if($preserve->{w});
|
||||||
unless($preserve->{w} && ($preserve->{w} eq 'all')) {
|
unless($preserve->{w} && ($preserve->{w} eq 'all')) {
|
||||||
push @out, "last weekly of month for $preserve->{m} months" if($preserve->{m});
|
push @out, "first weekly of month for $preserve->{m} months" if($preserve->{m});
|
||||||
unless($preserve->{m} && ($preserve->{m} eq 'all')) {
|
unless($preserve->{m} && ($preserve->{m} eq 'all')) {
|
||||||
push @out, "last weekly of year for $preserve->{y} years" if($preserve->{y});
|
push @out, "first weekly of year for $preserve->{y} years" if($preserve->{y});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH "btrbk.conf" "5" "2016-03-31" "btrbk v0.23.0-dev" ""
|
.TH "btrbk.conf" "5" "2016-04-12" "btrbk v0.23.0-dev" ""
|
||||||
.\" disable hyphenation
|
.\" disable hyphenation
|
||||||
.nh
|
.nh
|
||||||
.\" disable justification (adjust text to left margin only)
|
.\" disable justification (adjust text to left margin only)
|
||||||
|
@ -247,7 +247,7 @@ With the following semantics:
|
||||||
.B hourly
|
.B hourly
|
||||||
.RS 4
|
.RS 4
|
||||||
Defines how many hours back hourly backups should be preserved. The
|
Defines how many hours back hourly backups should be preserved. The
|
||||||
last backup of an hour is considered an hourly backup. Note that if
|
first backup of an hour is considered an hourly backup. Note that if
|
||||||
you use <hourly> scheduling, make sure to also set
|
you use <hourly> scheduling, make sure to also set
|
||||||
\fItimestamp_format\fR to \[lq]long\[rq], or the scheduler will
|
\fItimestamp_format\fR to \[lq]long\[rq], or the scheduler will
|
||||||
interpret the time as "00:00" (midnight).
|
interpret the time as "00:00" (midnight).
|
||||||
|
@ -256,7 +256,7 @@ interpret the time as "00:00" (midnight).
|
||||||
.B daily
|
.B daily
|
||||||
.RS 4
|
.RS 4
|
||||||
Defines how many days back daily backups should be preserved. The
|
Defines how many days back daily backups should be preserved. The
|
||||||
last backup of a day is considered a daily backup.
|
first backup of a day is considered a daily backup.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
.B weekly
|
.B weekly
|
||||||
|
@ -270,14 +270,14 @@ as a weekly backup.
|
||||||
.B monthly
|
.B monthly
|
||||||
.RS 4
|
.RS 4
|
||||||
Defines how many months back monthly backups should be
|
Defines how many months back monthly backups should be
|
||||||
preserved. Every last weekly backup in a month is considered a
|
preserved. Every first weekly backup in a month is considered a
|
||||||
monthly backup.
|
monthly backup.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
.B yearly
|
.B yearly
|
||||||
.RS 4
|
.RS 4
|
||||||
Defines for how many years back yearly backups should be
|
Defines for how many years back yearly backups should be
|
||||||
preserved. Every last monthly backup in a year is considered a yearly
|
preserved. Every first monthly backup in a year is considered a yearly
|
||||||
backup.
|
backup.
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
|
|
Loading…
Reference in New Issue