diff --git a/btrbk b/btrbk index bca525f..c7e4c03 100755 --- a/btrbk +++ b/btrbk @@ -79,9 +79,9 @@ my %config_options = ( snapshot_create => { default => "always", accept => [ "no", "always", "ondemand", "onchange" ] }, incremental => { default => "yes", accept => [ "yes", "no", "strict" ] }, preserve_day_of_week => { default => "sunday", accept => [ (keys %day_of_week_map) ] }, - snapshot_preserve => { default => undef, accept_preserve_matrix => 1, context => [ "root", "volume", "subvolume" ], }, + snapshot_preserve => { default => undef, accept => [ "no" ], accept_preserve_matrix => 1, context => [ "root", "volume", "subvolume" ], }, snapshot_preserve_min => { default => "1d", accept => [ "all", "latest" ], accept_regexp => qr/^[1-9][0-9]*[hdwmy]$/, context => [ "root", "volume", "subvolume" ], }, - target_preserve => { default => undef, accept_preserve_matrix => 1 }, + target_preserve => { default => undef, accept => [ "no" ], accept_preserve_matrix => 1 }, target_preserve_min => { default => undef, accept => [ "all", "latest", "no" ], accept_regexp => qr/^[0-9]+[hdwmy]$/ }, btrfs_commit_delete => { default => undef, accept => [ "after", "each", "no" ] }, ssh_identity => { default => undef, accept_file => { absolute => 1 } }, @@ -2179,28 +2179,6 @@ sub append_config_option($$$$;$) return undef; } - if($opt->{accept_preserve_matrix}) { - my %preserve; - my $s = ' ' . $value; - while($s =~ s/\s+(\*|[0-9]+)([hdwmyHDWMY])//) { - my $n = $1; - my $q = lc($2); # qw( h d w m y ) - $n = 'all' if($n eq '*'); - if(exists($preserve{$q})) { - ERROR "Value \"$value\" failed input validation for option \"$key\": multiple definitions of '$q'" . $config_file_statement; - return undef; - } - $preserve{$q} = $n; - } - unless($s eq "") { - ERROR "Value \"$value\" failed input validation for option \"$key\"" . $config_file_statement; - return undef; - } - TRACE "adding preserve matrix $context context:" . Data::Dumper->new([\%preserve], [ $key ])->Indent(0)->Pad(' ')->Quotekeys(0)->Pair('=>')->Dump() if($loglevel >= 4); - $config->{$key} = \%preserve; - return $config; - } - if(grep(/^\Q$value\E$/, @{$opt->{accept}})) { TRACE "option \"$key=$value\" found in accept list"; } @@ -2227,6 +2205,27 @@ sub append_config_option($$$$;$) return undef; } } + elsif($opt->{accept_preserve_matrix}) { + my %preserve; + my $s = ' ' . $value; + while($s =~ s/\s+(\*|[0-9]+)([hdwmyHDWMY])//) { + my $n = $1; + my $q = lc($2); # qw( h d w m y ) + $n = 'all' if($n eq '*'); + if(exists($preserve{$q})) { + ERROR "Value \"$value\" failed input validation for option \"$key\": multiple definitions of '$q'" . $config_file_statement; + return undef; + } + $preserve{$q} = $n; + } + unless($s eq "") { + ERROR "Value \"$value\" failed input validation for option \"$key\"" . $config_file_statement; + return undef; + } + TRACE "adding preserve matrix $context context:" . Data::Dumper->new([\%preserve], [ $key ])->Indent(0)->Pad(' ')->Quotekeys(0)->Pair('=>')->Dump() if($loglevel >= 4); + $config->{$key} = \%preserve; + return $config; + } else { ERROR "Unsupported value \"$value\" for option \"$key\"" . $config_file_statement; diff --git a/doc/btrbk.1 b/doc/btrbk.1 index 24408bc..223e653 100644 --- a/doc/btrbk.1 +++ b/doc/btrbk.1 @@ -1,4 +1,4 @@ -.TH "btrbk" "1" "2016-04-11" "btrbk v0.23.0-dev" "" +.TH "btrbk" "1" "2016-04-14" "btrbk v0.23.0-dev" "" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) @@ -144,6 +144,10 @@ retention policy will be deleted. Note that the latest snapshot (the one created in the first step) as well as the latest snapshot/backup pair are always preserved, regardless of the retention policy. .PP +See section RETENTION POLICY in +.BR btrbk.conf (5) +for information on configuring the retention policy. +.PP Use the \fI\-\-format\fR command line option to switch between different output formats. .RE diff --git a/doc/btrbk.conf.5 b/doc/btrbk.conf.5 index 46d21c8..25925af 100644 --- a/doc/btrbk.conf.5 +++ b/doc/btrbk.conf.5 @@ -1,4 +1,4 @@ -.TH "btrbk.conf" "5" "2016-04-12" "btrbk v0.23.0-dev" "" +.TH "btrbk.conf" "5" "2016-04-14" "btrbk v0.23.0-dev" "" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) @@ -121,9 +121,11 @@ non-incremental (initial) backups are never created. Defaults to \[lq]yes\[rq]. .RE .PP -\fBsnapshot_preserve\fR +\fBsnapshot_preserve\fR no| .RS 4 -Set retention policy for snapshots (see RETENTION POLICY below). +Set retention policy for snapshots (see RETENTION POLICY below). If +set to \[lq]no\[rq], preserve snapshots according to +\fIsnapshot_preserve_min\fR only. Defaults to \[lq]no\[rq]. .RE .PP \fBsnapshot_preserve_min\fR all|latest|{h,d,w,m,y} @@ -135,9 +137,11 @@ to \[lq]latest\[rq], preserve latest snapshot. Defaults to \[lq]1d\[rq]. .RE .PP -\fBtarget_preserve\fR +\fBtarget_preserve\fR no| .RS 4 -Set retention policy for backups (see RETENTION POLICY below). +Set retention policy for backups (see RETENTION POLICY below). If set +to \[lq]no\[rq], preserve backups according to +\fItarget_preserve_min\fR only. Defaults to \[lq]no\[rq]. .RE .PP \fBtarget_preserve_min\fR all|latest|no|{h,d,w,m,y}