mirror of https://github.com/digint/btrbk
documentation: convert all groff files (man pages) to asciidoc
- btrbk.conf.5 to btrbk.conf.5.asciidoc - btrbk.1 to btrbk.1.asciidoc - ssh_filter_btrbk.1 to ssh_filter_btrbk.1.asciidocpull/204/head
parent
e3ee674085
commit
c4ced9d6e4
|
@ -21,6 +21,7 @@ btrbk-current
|
||||||
* Remove "duration" column from transaction_log/transaction_syslog.
|
* Remove "duration" column from transaction_log/transaction_syslog.
|
||||||
* Resolve ancestors (recursive on parent_uuid chain) when searching
|
* Resolve ancestors (recursive on parent_uuid chain) when searching
|
||||||
for latest common subvolume.
|
for latest common subvolume.
|
||||||
|
* Generate man pages from asciidoc (remove raw groff sources).
|
||||||
* Bugfix: ssh_filter_btrbk: accept mbuffer command (stream_buffer).
|
* Bugfix: ssh_filter_btrbk: accept mbuffer command (stream_buffer).
|
||||||
* Bugfix: print correct (end-)time in transaction_log.
|
* Bugfix: print correct (end-)time in transaction_log.
|
||||||
* Bugfix: check path when expanding wildcards (close #181).
|
* Bugfix: check path when expanding wildcards (close #181).
|
||||||
|
|
421
doc/btrbk.1
421
doc/btrbk.1
|
@ -1,421 +0,0 @@
|
||||||
.TH "btrbk" "1" "2017-08-21" "btrbk v0.26.0-dev" ""
|
|
||||||
.\" disable hyphenation
|
|
||||||
.nh
|
|
||||||
.\" disable justification (adjust text to left margin only)
|
|
||||||
.ad l
|
|
||||||
.SH NAME
|
|
||||||
btrbk \- backup tool for btrfs volumes
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.nf
|
|
||||||
\fBbtrbk\fR [\-h|\-\-help] [\-\-version] [\-c|\-\-config <file>]
|
|
||||||
[\-n|\-\-dry\-run] [\-p|\-\-preserve]
|
|
||||||
[\-\-preserve\-snapshots] [\-\-preserve\-backups]
|
|
||||||
[\-v|\-\-verbose] [\-q|\-\-quiet] [\-l|\-\-loglevel <level>]
|
|
||||||
[\-t|\-\-table] [\-\-format <output\-format>]
|
|
||||||
[\-\-progress] [\-\-print\-schedule]
|
|
||||||
<command> [<args>]
|
|
||||||
.fi
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBbtrbk\fR is a backup tool for btrfs subvolumes, taking advantage of
|
|
||||||
btrfs specific capabilities to create atomic snapshots and transfer
|
|
||||||
them incrementally to a target btrfs filesystem. It is able to perform
|
|
||||||
backups from one source to multiple destinations.
|
|
||||||
.PP
|
|
||||||
Snapshots as well as backup subvolume names are created in form:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
<snapshot\-name>.<timestamp>[_N]
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
Where <snapshot\-name> is identical to the source subvolume name,
|
|
||||||
unless the configuration option \fIsnapshot_name\fR is set. The
|
|
||||||
<timestamp> is either "YYYYMMDD" or "YYYYMMDDThhmm" (dependent of the
|
|
||||||
\fItimestamp_format\fR configuration option), where "YYYY" is the
|
|
||||||
year, "MM" is the month, "DD" is the day, "hh" is the hour and "mm" is
|
|
||||||
the minute of the creation time (local time of the host running
|
|
||||||
btrbk). If multiple snapshots/backups are created on the same
|
|
||||||
date/time, N will be incremented on each snapshot, starting at 1.
|
|
||||||
.SH OPTIONS
|
|
||||||
.PP
|
|
||||||
\-h, \-\-help
|
|
||||||
.RS 4
|
|
||||||
Prints the synopsis and a list of the commands.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-version
|
|
||||||
.RS 4
|
|
||||||
Prints the btrbk version.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-n, \-\-dry\-run
|
|
||||||
.RS 4
|
|
||||||
Don't run anything that would alter the filesystem, just show the
|
|
||||||
snapshots and backup subvolumes that would be created/deleted by the
|
|
||||||
\fBrun\fR, \fBsnapshot\fR, \fBresume\fR, \fBprune\fR, \fBarchive\fR
|
|
||||||
and \fBclean\fR commands. Use in conjunction with \fI\-l debug\fR to
|
|
||||||
see the btrfs commands that would be executed.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-c, \-\-config <file>
|
|
||||||
.RS 4
|
|
||||||
Read the configuration from <file>.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-p, \-\-preserve
|
|
||||||
.RS 4
|
|
||||||
Preserve all snapshots and backups. Skips deletion of any snapshots
|
|
||||||
and backups, even if specified in the configuration file (shortcut for
|
|
||||||
"\-\-preserve\-snapshots \-\-preserve\-backups").
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-preserve-snapshots
|
|
||||||
.RS 4
|
|
||||||
Preserve all snapshots. Skips deletion of any snapshots, even if
|
|
||||||
specified in the configuration file.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-preserve-backups
|
|
||||||
.RS 4
|
|
||||||
Preserve all backups. Skips deletion of any backups, even if specified
|
|
||||||
in the configuration file.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-wipe
|
|
||||||
.RS 4
|
|
||||||
Ignore configured snapshot retention policy, delete all but latest
|
|
||||||
snapshots instead. All snapshots needed for incremental backup (latest
|
|
||||||
common) are also preserved. Useful if you are getting low on disk
|
|
||||||
space (ENOSPC).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-v, \-\-verbose
|
|
||||||
.RS 4
|
|
||||||
Verbose output (shortcut for "\-\-loglevel=info").
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-q, \-\-quiet
|
|
||||||
.RS 4
|
|
||||||
Quiet operation. If set, btrbk does not print the summary after
|
|
||||||
executing the \fBrun\fR, \fBsnapshot\fR, \fBresume\fR, \fBprune\fR, or
|
|
||||||
\fBarchive\fR commands.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-l, \-\-loglevel <level>
|
|
||||||
.RS 4
|
|
||||||
Set the level of verbosity. Accepted levels are warn, info, debug,
|
|
||||||
and trace.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-t, \-\-table
|
|
||||||
.RS 4
|
|
||||||
Print output in table format (shortcut for "\-\-format=table").
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-format table|long|raw
|
|
||||||
.RS 4
|
|
||||||
Print output in specified format. If set to "raw", prints
|
|
||||||
space-separated key="value" pairs (machine readable). Affects output
|
|
||||||
format for \fBrun\fR, \fBsnapshot\fR, \fBresume\fR, \fBprune\fR,
|
|
||||||
\fBarchive\fR and \fBlist\fR commands. Useful for further
|
|
||||||
exporting/scripting.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-progress
|
|
||||||
.RS 4
|
|
||||||
Show progress bar on send-receive operation.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-print\-schedule
|
|
||||||
.RS 4
|
|
||||||
Print detailed scheduler information on \fBrun\fR, \fBsnapshot\fR,
|
|
||||||
\fBresume\fR, \fBprune\fR and \fBarchive\fR commands. Use the
|
|
||||||
\fI\-\-format\fR command line option to switch between different
|
|
||||||
output formats.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-override <config_option>=<value>
|
|
||||||
.RS 4
|
|
||||||
Override a configuration option <config_option> with
|
|
||||||
<value>. Globally, for ALL contexts. Use with care!
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-lockfile <file>
|
|
||||||
.RS 4
|
|
||||||
Create lockfile <file> on startup; checks lockfile before running any
|
|
||||||
btrfs commands (using perl "flock"), and exits if the lock is held by
|
|
||||||
another btrbk instance. Overrides configuration option
|
|
||||||
"lockfile". Ignored on dryrun (\fI\-n\fR, \fI\-\-dry\-run\fR).
|
|
||||||
.RE
|
|
||||||
.SH COMMANDS
|
|
||||||
.PP
|
|
||||||
.B run
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Perform snapshot and backup operations as specified in the
|
|
||||||
configuration file. If the optional [filter...] arguments are present,
|
|
||||||
snapshots and backups are only performed for the subvolumes/targets
|
|
||||||
matching a \fIFILTER STATEMENT\fR (see below).
|
|
||||||
.PP
|
|
||||||
.B Step 0: Read Data
|
|
||||||
.RS 4
|
|
||||||
Read information from the source and target btrfs filesystems in order
|
|
||||||
to perform sanity checks and identify parent/child and received-from
|
|
||||||
relationships.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B Step 1: Create Snapshots
|
|
||||||
.RS 4
|
|
||||||
If the checks succeed, btrbk creates snapshots for the source
|
|
||||||
subvolumes specified in the configuration file, according to the
|
|
||||||
\fIsnapshot_create\fR option.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B Step 2: Create Backups
|
|
||||||
.RS 4
|
|
||||||
For each specified target, btrbk creates the backups as follows: After
|
|
||||||
comparing the backups to the source snapshots, btrbk transfers all
|
|
||||||
missing snapshots needed to satisfy the configured target retention
|
|
||||||
policy, incrementally from the latest common parent subvolume
|
|
||||||
found. If no common parent subvolume is found (or if the
|
|
||||||
\fIincremental\fR option is set to \[lq]no\[rq]), a full
|
|
||||||
(non-incremental) backup is created.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B Step 3: Delete Backups
|
|
||||||
.RS 4
|
|
||||||
Unless the \-p, \-\-preserve or \-\-preserve\-backups option is set,
|
|
||||||
backup subvolumes that are not preserved by their configured retention
|
|
||||||
policy will be deleted. Note that the latest snapshot/backup pair are
|
|
||||||
always preserved, regardless of the retention policy.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B Step 4: Delete Snapshots
|
|
||||||
.RS 4
|
|
||||||
Unless the \-p, \-\-preserve or \-\-preserve-snapshots option is set,
|
|
||||||
snapshots that are not preserved by their configured retention policy
|
|
||||||
will be deleted. Note that the latest snapshot (the one created in
|
|
||||||
step 1) as well as the latest snapshot/backup pair are always
|
|
||||||
preserved, regardless of the retention policy.
|
|
||||||
.RE
|
|
||||||
.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
|
|
||||||
.PP
|
|
||||||
.B dryrun
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Don't run any btrfs commands that would alter the filesystem, just
|
|
||||||
show the snapshots and backup subvolumes that would be created/deleted
|
|
||||||
by the \fBrun\fR command. Use in conjunction with \fI\-l debug\fR to
|
|
||||||
see the btrfs commands that would be executed.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B snapshot
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Snapshot only: skips backup creation and deletion (steps 2 and 3). Use
|
|
||||||
in conjunction with \-p, \-\-preserve (or \-\-preserve\-snapshots) if
|
|
||||||
you also want to skip snapshot deletion (step 4).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B resume
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Resume backups: skips snapshot creation (step 1), transfers and
|
|
||||||
deletes snapshots/backups in order to satisfy their configured
|
|
||||||
retention policy. Use in conjunction with \-p, \-\-preserve,
|
|
||||||
\-\-preserve\-backups, \-\-preserve\-snapshots if you want to skip
|
|
||||||
backup and/or snapshot deletion (steps 3, 4).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B prune
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Prune snapshots and backups: skips snapshot and backup creation (steps
|
|
||||||
1, 2), only deletes snapshots and backups in order to satisfy their
|
|
||||||
configured retention policy. Useful for cleaning the disk after
|
|
||||||
changing the retention policy. Use in conjunction with
|
|
||||||
\-\-preserve\-backups, \-\-preserve\-snapshots if you want to skip
|
|
||||||
backup or snapshot deletion (steps 3, 4).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B archive
|
|
||||||
<source> <target>
|
|
||||||
.I *experimental*
|
|
||||||
.RS 4
|
|
||||||
Recursively copy all subvolumes created by btrbk from <source> to
|
|
||||||
<target> directory, optionally rescheduled using
|
|
||||||
\fIarchive_preserve_*\fR configuration options. Also creates directory
|
|
||||||
tree on <target> (see bugs below). Useful for creating extra archive
|
|
||||||
copies (clones) from your backup disks. Note that you can continue
|
|
||||||
using btrbk after swapping your backup disk with the archive disk.
|
|
||||||
.PP
|
|
||||||
Note that this feature needs a \fBlinux kernel >=4.4\fR to work
|
|
||||||
correctly! Kernels >=4.1 and <4.4 have a bug when re-sending
|
|
||||||
subvolumes (the archived subvolumes will have incorrect received_uuid,
|
|
||||||
see <http://thread.gmane.org/gmane.comp.file\-systems.btrfs/48798>),
|
|
||||||
so make sure you run a recent kernel.
|
|
||||||
.PP
|
|
||||||
Known bugs: If you want to use nested subvolumes on the target
|
|
||||||
filesystem, you need to create them by hand (e.g. by running "btrfs
|
|
||||||
subvolume create <target>/dir"). Check the output of \-\-dry\-run if
|
|
||||||
unsure.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B stats
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Print statistics of snapshot and backup subvolumes. Optionally
|
|
||||||
filtered by [filter...] arguments (see \fIFILTER STATEMENTS\fR below).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B list
|
|
||||||
<subcommand> [filter...]
|
|
||||||
.RS 4
|
|
||||||
Print information defined by <subcommand> in a tabular form. Optionally
|
|
||||||
filtered by [filter...] arguments (see \fIFILTER STATEMENTS\fR
|
|
||||||
below).
|
|
||||||
.PP
|
|
||||||
Available subcommands:
|
|
||||||
.TP 11
|
|
||||||
.B snapshots
|
|
||||||
All snapshots (and corresponding backups).
|
|
||||||
.PD 0
|
|
||||||
.TP 11
|
|
||||||
.B backups
|
|
||||||
All backups (and corresponding snapshots).
|
|
||||||
.TP 11
|
|
||||||
.B latest
|
|
||||||
Most recent common snapshot/backup pair, or most recent snapshot if no
|
|
||||||
common found.
|
|
||||||
.TP 11
|
|
||||||
.B config
|
|
||||||
Configured source/snapshot/target relations.
|
|
||||||
.TP 11
|
|
||||||
.B source
|
|
||||||
Configured source/snapshot relations.
|
|
||||||
.TP 11
|
|
||||||
.B volume
|
|
||||||
Configured volume sections.
|
|
||||||
.TP 11
|
|
||||||
.B target
|
|
||||||
Configured targets.
|
|
||||||
.PD
|
|
||||||
.PP
|
|
||||||
Use the \fI\-\-format\fR command line option to switch between
|
|
||||||
different output formats.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B clean
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Delete incomplete (garbled) backups. Incomplete backups can be left
|
|
||||||
behind on network errors or kill signals while a send/receive
|
|
||||||
operation is ongoing, and are identified by the "received_uuid" flag
|
|
||||||
not being set on a target (backup) subvolume.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B usage
|
|
||||||
[filter...]
|
|
||||||
.RS 4
|
|
||||||
Print filesystem usage information for all source/target volumes,
|
|
||||||
optionally filtered by [filter...] arguments (see \fIFILTER
|
|
||||||
STATEMENTS\fR below). Note that the "free" value is an estimate of the
|
|
||||||
amount of data that can still be written to the file system.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B origin
|
|
||||||
<subvolume>
|
|
||||||
.RS 4
|
|
||||||
Print the subvolume origin tree: Shows the parent-child relationships
|
|
||||||
as well as the received-from information. Use the \fI\-\-format\fR
|
|
||||||
command line option to switch between different output formats.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B diff
|
|
||||||
<from> <to>
|
|
||||||
.RS 4
|
|
||||||
Print new files since subvolume <from> for subvolume <to>.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B config
|
|
||||||
print|print\-all
|
|
||||||
.RS 4
|
|
||||||
Prints the parsed configuration file. Use the \fI\-\-format\fR command
|
|
||||||
line option to switch between different output formats.
|
|
||||||
.RE
|
|
||||||
.SH FILTER STATEMENTS
|
|
||||||
Filter arguments are accepted in form:
|
|
||||||
.PP
|
|
||||||
[hostname:]<volume\-directory>
|
|
||||||
.RS 4
|
|
||||||
Matches all subvolumes and targets of a \fIvolume\fR configuration
|
|
||||||
section.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
[hostname:]<volume\-directory>/<subvolume\-name>
|
|
||||||
.RS 4
|
|
||||||
Matches the specified subvolume and all targets of a \fIsubvolume\fR
|
|
||||||
configuration section.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
[hostname:]<target\-directory>
|
|
||||||
.RS 4
|
|
||||||
Matches all targets of a \fItarget\fR configuration section.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
[hostname:]<target\-directory>/<snapshot\-name>
|
|
||||||
.RS 4
|
|
||||||
Matches a single target of a \fItarget\fR section within a
|
|
||||||
\fIsubvolume\fR section with given <snapshot\-name>.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
<group\-name>
|
|
||||||
.RS 4
|
|
||||||
Matches the \fIgroup\fR configuration option of a \fIvolume\fR,
|
|
||||||
\fIsubvolume\fR or \fItarget\fR section.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
For convenience, [hostname:] can be specified as either "hostname:" or
|
|
||||||
"ssh://hostname/".
|
|
||||||
.SH FILES
|
|
||||||
.PP
|
|
||||||
/etc/btrbk.conf
|
|
||||||
.br
|
|
||||||
/etc/btrbk/btrbk.conf
|
|
||||||
.RS 4
|
|
||||||
Default configuration file. The file format and configuration options
|
|
||||||
are described in
|
|
||||||
.BR btrbk.conf (5).
|
|
||||||
.RE
|
|
||||||
.PD
|
|
||||||
.SH EXIT STATUS
|
|
||||||
\fBbtrbk\fR returns the following error codes:
|
|
||||||
.IP "0" 4
|
|
||||||
No problems occurred.
|
|
||||||
.IP "1" 4
|
|
||||||
Generic error code.
|
|
||||||
.IP "2" 4
|
|
||||||
Parse error: when parsing command-line options or configuration file.
|
|
||||||
.IP "3" 4
|
|
||||||
Lockfile error: if lockfile is present on startup.
|
|
||||||
.IP "10" 4
|
|
||||||
Backup abort: At least one backup task aborted.
|
|
||||||
.IP "255" 4
|
|
||||||
Script error.
|
|
||||||
.SH AVAILABILITY
|
|
||||||
Please refer to the btrbk project page \fBhttp://digint.ch/btrbk/\fR
|
|
||||||
for further details.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR btrbk.conf (5),
|
|
||||||
.BR btrfs (1)
|
|
||||||
.PP
|
|
||||||
For more information about btrfs and incremental backups, see the web
|
|
||||||
site at https://btrfs.wiki.kernel.org/index.php/Incremental_Backup
|
|
||||||
.SH AUTHOR
|
|
||||||
Axel Burri <axel@tty0.ch>
|
|
|
@ -0,0 +1,363 @@
|
||||||
|
btrbk(1)
|
||||||
|
========
|
||||||
|
:date: 2017-10-09
|
||||||
|
:revision: 0.26.0-dev
|
||||||
|
:man manual: Btrbk Manual
|
||||||
|
:man source: Btrbk
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
|
||||||
|
btrbk - backup tool for btrfs volumes
|
||||||
|
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
[literal]
|
||||||
|
btrbk [-h|--help] [--version] [-c|--config <file>]
|
||||||
|
[-n|--dry-run] [-p|--preserve]
|
||||||
|
[--preserve-snapshots] [--preserve-backups]
|
||||||
|
[-v|--verbose] [-q|--quiet] [-l|--loglevel <level>]
|
||||||
|
[-t|--table] [--format <output-format>]
|
||||||
|
[--progress] [--print-schedule]
|
||||||
|
<command> [<args>]
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
*btrbk* is a backup tool for btrfs subvolumes, taking advantage of
|
||||||
|
btrfs specific capabilities to create atomic snapshots and transfer
|
||||||
|
them incrementally to a target btrfs filesystem. It is able to perform
|
||||||
|
backups from one source to multiple destinations.
|
||||||
|
|
||||||
|
Snapshots as well as backup subvolume names are created in form:
|
||||||
|
|
||||||
|
<snapshot-name>.<timestamp>[_N]
|
||||||
|
|
||||||
|
Where '<snapshot-name>' is identical to the source subvolume name,
|
||||||
|
unless the configuration option 'snapshot_name' is set. The
|
||||||
|
<timestamp> is either "YYYYMMDD" or "YYYYMMDDThhmm" (dependent of the
|
||||||
|
'timestamp_format' configuration option), where "YYYY" is the year,
|
||||||
|
"MM" is the month, "DD" is the day, "hh" is the hour and "mm" is the
|
||||||
|
minute of the creation time (local time of the host running btrbk). If
|
||||||
|
multiple snapshots/backups are created on the same date/time, N will
|
||||||
|
be incremented on each snapshot, starting at 1.
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
-h, --help::
|
||||||
|
Prints the synopsis and a list of the commands.
|
||||||
|
|
||||||
|
--version::
|
||||||
|
Prints the btrbk version.
|
||||||
|
|
||||||
|
-n, --dry-run::
|
||||||
|
Don't run anything that would alter the filesystem, just show the
|
||||||
|
snapshots and backup subvolumes that would be created/deleted by
|
||||||
|
the *run*, *snapshot*, *resume*, *prune*, *archive* and *clean*
|
||||||
|
commands. Use in conjunction with '-l debug' to see the btrfs
|
||||||
|
commands that would be executed.
|
||||||
|
|
||||||
|
-c, --config <file>::
|
||||||
|
Read the configuration from <file>.
|
||||||
|
|
||||||
|
-p, --preserve::
|
||||||
|
Preserve all snapshots and backups. Skips deletion of any
|
||||||
|
snapshots and backups, even if specified in the configuration file
|
||||||
|
(shortcut for "--preserve-snapshots --preserve-backups").
|
||||||
|
|
||||||
|
--preserve-snapshots::
|
||||||
|
Preserve all snapshots. Skips deletion of any snapshots, even if
|
||||||
|
specified in the configuration file.
|
||||||
|
|
||||||
|
--preserve-backups::
|
||||||
|
Preserve all backups. Skips deletion of any backups, even if
|
||||||
|
specified in the configuration file.
|
||||||
|
|
||||||
|
--wipe::
|
||||||
|
Ignore configured snapshot retention policy, delete all but latest
|
||||||
|
snapshots instead. All snapshots needed for incremental backup
|
||||||
|
(latest common) are also preserved. Useful if you are getting low
|
||||||
|
on disk space (ENOSPC).
|
||||||
|
|
||||||
|
-v, --verbose::
|
||||||
|
Verbose output (shortcut for "--loglevel=info").
|
||||||
|
|
||||||
|
-q, --quiet::
|
||||||
|
Quiet operation. If set, btrbk does not print the summary after
|
||||||
|
executing the *run*, *snapshot*, *resume*, *prune*, or *archive*
|
||||||
|
commands.
|
||||||
|
|
||||||
|
-l, --loglevel <level>::
|
||||||
|
Set the level of verbosity. Accepted levels are warn, info, debug,
|
||||||
|
and trace.
|
||||||
|
|
||||||
|
-t, --table::
|
||||||
|
Print output in table format (shortcut for "--format=table").
|
||||||
|
|
||||||
|
--format table|long|raw::
|
||||||
|
Print output in specified format. If set to "raw", prints
|
||||||
|
space-separated key="value" pairs (machine readable). Affects
|
||||||
|
output format for *run*, *snapshot*, *resume*, *prune*, *archive*
|
||||||
|
and *list* commands. Useful for further exporting/scripting.
|
||||||
|
|
||||||
|
--progress::
|
||||||
|
Show progress bar on send-receive operation.
|
||||||
|
|
||||||
|
--print-schedule::
|
||||||
|
Print detailed scheduler information on *run*, *snapshot*,
|
||||||
|
*resume*, *prune* and *archive* commands. Use the '--format'
|
||||||
|
command line option to switch between different output formats.
|
||||||
|
|
||||||
|
--override <config_option>=<value>::
|
||||||
|
Override a configuration option <config_option> with
|
||||||
|
<value>. Globally, for ALL contexts. Use with care!
|
||||||
|
|
||||||
|
--lockfile <file>::
|
||||||
|
Create lockfile <file> on startup; checks lockfile before running
|
||||||
|
any btrfs commands (using perl "flock"), and exits if the lock is
|
||||||
|
held by another btrbk instance. Overrides configuration option
|
||||||
|
"lockfile". Ignored on dryrun ('-n', '--dry-run').
|
||||||
|
|
||||||
|
|
||||||
|
COMMANDS
|
||||||
|
--------
|
||||||
|
|
||||||
|
=== Actions
|
||||||
|
|
||||||
|
The following commands are used to create snapshots and/or
|
||||||
|
backups. All actions can operate in dry-run mode ('-n',
|
||||||
|
'--dry-run').
|
||||||
|
|
||||||
|
*run* [filter...]::
|
||||||
|
Perform snapshot and backup operations as specified in the
|
||||||
|
configuration file. If the optional [filter...] arguments are
|
||||||
|
present, snapshots and backups are only performed for the
|
||||||
|
subvolumes/targets matching a filter statement (see
|
||||||
|
<<_filter_statements,FILTER STATEMENTS>> below).
|
||||||
|
+
|
||||||
|
*Step 0: Read Data*;;
|
||||||
|
Read information from the source and target btrfs filesystems in
|
||||||
|
order to perform sanity checks and identify parent/child and
|
||||||
|
received-from relationships.
|
||||||
|
+
|
||||||
|
*Step 1: Create Snapshots*;;
|
||||||
|
If the checks succeed, btrbk creates snapshots for the source
|
||||||
|
subvolumes specified in the configuration file, according to the
|
||||||
|
'snapshot_create' option.
|
||||||
|
+
|
||||||
|
*Step 2: Create Backups*;;
|
||||||
|
For each specified target, btrbk creates the backups as follows:
|
||||||
|
After comparing the backups to the source snapshots, btrbk
|
||||||
|
transfers all missing snapshots needed to satisfy the configured
|
||||||
|
target retention policy, incrementally from the latest common
|
||||||
|
parent subvolume found. If no common parent subvolume is found (or
|
||||||
|
if the 'incremental' option is set to ``no''), a full
|
||||||
|
(non-incremental) backup is created.
|
||||||
|
+
|
||||||
|
*Step 3: Delete Backups*;;
|
||||||
|
Unless the -p, --preserve or --preserve-backups option is set,
|
||||||
|
backup subvolumes that are not preserved by their configured
|
||||||
|
retention policy will be deleted. Note that the latest
|
||||||
|
snapshot/backup pair are always preserved, regardless of the
|
||||||
|
retention policy.
|
||||||
|
+
|
||||||
|
*Step 4: Delete Snapshots*;;
|
||||||
|
Unless the -p, --preserve or --preserve-snapshots option is set,
|
||||||
|
snapshots that are not preserved by their configured retention
|
||||||
|
policy will be deleted. Note that the latest snapshot (the one
|
||||||
|
created in step 1) as well as the latest snapshot/backup pair are
|
||||||
|
always preserved, regardless of the retention policy.
|
||||||
|
+
|
||||||
|
See section RETENTION POLICY in `btrbk.conf`(5)
|
||||||
|
for information on configuring the retention policy.
|
||||||
|
|
||||||
|
Use the '--format' command line option to switch between
|
||||||
|
different output formats.
|
||||||
|
|
||||||
|
*dryrun* [filter...]::
|
||||||
|
Don't run any btrfs commands that would alter the filesystem, just
|
||||||
|
show the snapshots and backup subvolumes that would be
|
||||||
|
created/deleted by the *run* command. Use in conjunction with '-l
|
||||||
|
debug' to see the btrfs commands that would be executed.
|
||||||
|
|
||||||
|
*snapshot* [filter...]::
|
||||||
|
Snapshot only: skips backup creation and deletion (steps 2 and
|
||||||
|
3). Use in conjunction with -p, --preserve (or
|
||||||
|
--preserve-snapshots) if you also want to skip snapshot deletion
|
||||||
|
(step 4).
|
||||||
|
|
||||||
|
*resume* [filter...]::
|
||||||
|
Resume backups: skips snapshot creation (step 1), transfers and
|
||||||
|
deletes snapshots/backups in order to satisfy their configured
|
||||||
|
retention policy. Use in conjunction with -p, --preserve,
|
||||||
|
--preserve-backups, --preserve-snapshots if you want to skip
|
||||||
|
backup and/or snapshot deletion (steps 3, 4).
|
||||||
|
|
||||||
|
*prune* [filter...]::
|
||||||
|
Prune snapshots and backups: skips snapshot and backup creation
|
||||||
|
(steps 1, 2), only deletes snapshots and backups in order to
|
||||||
|
satisfy their configured retention policy. Useful for cleaning the
|
||||||
|
disk after changing the retention policy. Use in conjunction with
|
||||||
|
--preserve-backups, --preserve-snapshots if you want to skip
|
||||||
|
backup or snapshot deletion (steps 3, 4).
|
||||||
|
|
||||||
|
*archive* <source> <target> _*experimental*_::
|
||||||
|
Recursively copy all subvolumes created by btrbk from <source> to
|
||||||
|
<target> directory, optionally rescheduled using
|
||||||
|
'archive_preserve_*' configuration options. Also creates directory
|
||||||
|
tree on <target> (see bugs below). Useful for creating extra
|
||||||
|
archive copies (clones) from your backup disks. Note that you can
|
||||||
|
continue using btrbk after swapping your backup disk with the
|
||||||
|
archive disk.
|
||||||
|
+
|
||||||
|
Note that this feature needs a *linux kernel >=4.4* to work correctly!
|
||||||
|
Kernels >=4.1 and <4.4 have a bug when re-sending subvolumes (the
|
||||||
|
archived subvolumes will have incorrect received_uuid, see
|
||||||
|
<http://thread.gmane.org/gmane.comp.file-systems.btrfs/48798>), so
|
||||||
|
make sure you run a recent kernel.
|
||||||
|
+
|
||||||
|
Known bugs: If you want to use nested subvolumes on the target
|
||||||
|
filesystem, you need to create them by hand (e.g. by running "btrfs
|
||||||
|
subvolume create <target>/dir"). Check the output of --dry-run if
|
||||||
|
unsure.
|
||||||
|
|
||||||
|
|
||||||
|
=== Informative Commands
|
||||||
|
|
||||||
|
The following commands are informative only, and will not alter the
|
||||||
|
file system.
|
||||||
|
|
||||||
|
*stats* [filter...]::
|
||||||
|
Print statistics of snapshot and backup subvolumes. Optionally
|
||||||
|
filtered by [filter...] arguments (see <<_filter_statements,FILTER
|
||||||
|
STATEMENTS>> below).
|
||||||
|
|
||||||
|
*list* <subcommand> [filter...]::
|
||||||
|
Print information defined by <subcommand> in a tabular
|
||||||
|
form. Optionally filtered by [filter...] arguments (see
|
||||||
|
<<_filter_statements,FILTER STATEMENTS>> below).
|
||||||
|
+
|
||||||
|
Available subcommands:
|
||||||
|
+
|
||||||
|
--
|
||||||
|
[horizontal]
|
||||||
|
*snapshots*;; All snapshots (and corresponding backups).
|
||||||
|
*backups*;; All backups (and corresponding snapshots).
|
||||||
|
*latest*;; Most recent common snapshot/backup pair, or most recent
|
||||||
|
snapshot if no common found.
|
||||||
|
*config*;; Configured source/snapshot/target relations.
|
||||||
|
*source*;; Configured source/snapshot relations.
|
||||||
|
*volume*;; Configured volume sections.
|
||||||
|
*target*;; Configured targets.
|
||||||
|
--
|
||||||
|
+
|
||||||
|
Use the '--format' command line option to switch between
|
||||||
|
different output formats.
|
||||||
|
|
||||||
|
|
||||||
|
*clean* [filter...]::
|
||||||
|
Delete incomplete (garbled) backups. Incomplete backups can be
|
||||||
|
left behind on network errors or kill signals while a send/receive
|
||||||
|
operation is ongoing, and are identified by the "received_uuid"
|
||||||
|
flag not being set on a target (backup) subvolume.
|
||||||
|
|
||||||
|
*usage* [filter...]::
|
||||||
|
Print filesystem usage information for all source/target volumes,
|
||||||
|
optionally filtered by [filter...] arguments (see
|
||||||
|
<<_filter_statements,FILTER STATEMENTS>> below). Note that the
|
||||||
|
"free" value is an estimate of the amount of data that can still
|
||||||
|
be written to the file system.
|
||||||
|
|
||||||
|
*origin* <subvolume>::
|
||||||
|
Print the subvolume origin tree: Shows the parent-child
|
||||||
|
relationships as well as the received-from information. Use the
|
||||||
|
'--format' command line option to switch between different output
|
||||||
|
formats.
|
||||||
|
|
||||||
|
*diff* <from> <to>::
|
||||||
|
Print new files since subvolume <from> for subvolume <to>.
|
||||||
|
|
||||||
|
*config* print|print-all::
|
||||||
|
Prints the parsed configuration file. Use the '--format' command
|
||||||
|
line option to switch between different output formats.
|
||||||
|
|
||||||
|
|
||||||
|
FILTER STATEMENTS
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Filter arguments are accepted in form:
|
||||||
|
|
||||||
|
[hostname:]<volume-directory>::
|
||||||
|
Matches all subvolumes and targets of a 'volume' configuration
|
||||||
|
section.
|
||||||
|
|
||||||
|
[hostname:]<volume-directory>/<subvolume-name>::
|
||||||
|
Matches the specified subvolume and all targets of a 'subvolume'
|
||||||
|
configuration section.
|
||||||
|
|
||||||
|
[hostname:]<target-directory>::
|
||||||
|
Matches all targets of a 'target' configuration section.
|
||||||
|
|
||||||
|
[hostname:]<target-directory>/<snapshot-name>::
|
||||||
|
Matches a single target of a 'target' section within a 'subvolume'
|
||||||
|
section with given <snapshot-name>.
|
||||||
|
|
||||||
|
<group-name>::
|
||||||
|
Matches the 'group' configuration option of a 'volume',
|
||||||
|
'subvolume' or 'target' section.
|
||||||
|
|
||||||
|
For convenience, [hostname:] can be specified as either "hostname:" or
|
||||||
|
"ssh://hostname/".
|
||||||
|
|
||||||
|
|
||||||
|
FILES
|
||||||
|
-----
|
||||||
|
|
||||||
|
+/etc/btrbk.conf+::
|
||||||
|
+/etc/btrbk/btrbk.conf+::
|
||||||
|
Default configuration file. The file format and configuration
|
||||||
|
options are described in *btrbk.conf*(5).
|
||||||
|
|
||||||
|
|
||||||
|
EXIT STATUS
|
||||||
|
-----------
|
||||||
|
|
||||||
|
*btrbk* returns the following error codes:
|
||||||
|
|
||||||
|
[horizontal]
|
||||||
|
0:: No problems occurred.
|
||||||
|
1:: Generic error code.
|
||||||
|
2:: Parse error: when parsing command-line options or configuration
|
||||||
|
file.
|
||||||
|
3:: Lockfile error: if lockfile is present on startup.
|
||||||
|
10:: Backup abort: At least one backup task aborted.
|
||||||
|
255:: Script error.
|
||||||
|
|
||||||
|
|
||||||
|
AVAILABILITY
|
||||||
|
------------
|
||||||
|
|
||||||
|
Please refer to the btrbk project page *<http://digint.ch/btrbk/>* for
|
||||||
|
further details.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
|
||||||
|
*btrbk.conf*(5),
|
||||||
|
*btrfs*(8)
|
||||||
|
|
||||||
|
For more information about btrfs and incremental backups, see the web
|
||||||
|
site at https://btrfs.wiki.kernel.org/index.php/Incremental_Backup
|
||||||
|
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
------
|
||||||
|
|
||||||
|
Axel Burri <axel@tty0.ch>
|
508
doc/btrbk.conf.5
508
doc/btrbk.conf.5
|
@ -1,508 +0,0 @@
|
||||||
.TH "btrbk.conf" "5" "2017-09-28" "btrbk v0.26.0-dev" ""
|
|
||||||
.\" disable hyphenation
|
|
||||||
.nh
|
|
||||||
.\" disable justification (adjust text to left margin only)
|
|
||||||
.ad l
|
|
||||||
.SH NAME
|
|
||||||
btrbk.conf \- btrbk configuration file
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B /etc/btrbk.conf
|
|
||||||
.br
|
|
||||||
.B /etc/btrbk/btrbk.conf
|
|
||||||
.SH DESCRIPTION
|
|
||||||
The btrbk configuration file specifies which btrfs subvolumes on the
|
|
||||||
filesystem are to be processed, what target subvolumes should be used
|
|
||||||
to create the backups, and where the snapshots should be
|
|
||||||
generated. The retention policy, as well as most other options can be
|
|
||||||
defined either globally or within a section.
|
|
||||||
.PP
|
|
||||||
The options specified always apply to the last section encountered,
|
|
||||||
superseding the values set in upper-level sections. This means that
|
|
||||||
global options must be set before any sections are defined.
|
|
||||||
.PP
|
|
||||||
Blank lines are ignored. A hash character (#) starts a comment
|
|
||||||
extending until end of line.
|
|
||||||
.SH SECTIONS
|
|
||||||
.PP
|
|
||||||
\fBvolume\fR <volume\-directory>|<url>
|
|
||||||
.RS 4
|
|
||||||
Directory of a btrfs volume containing the source subvolume(s) to be
|
|
||||||
backed up. \fI<volume\-directory>\fR must be an absolute path and
|
|
||||||
point to a btrfs volume (or subvolume). Usually the mount point of a
|
|
||||||
btrfs filesystem mounted with the \fIsubvolid=0\fR option.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsubvolume\fR <subvolume\-name>
|
|
||||||
.RS 4
|
|
||||||
Subvolume to be backed up, relative to the \fI<volume\-directory>\fR
|
|
||||||
specified in the \fIvolume\fR section. Multiple \fIsubvolume\fR
|
|
||||||
sections are allowed within \fIvolume\fR sections. Accepts wildcard
|
|
||||||
character "*".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBtarget\fR <type> <target\-directory>|<url>
|
|
||||||
.RS 4
|
|
||||||
Target type and directory where the backup subvolumes are to be
|
|
||||||
created. See the TARGET TYPES section for supported
|
|
||||||
\fI<type>\fR. Multiple \fItarget\fR sections are allowed within
|
|
||||||
\fIsubvolume\fR sections. A \fItarget\fR section defined in the global
|
|
||||||
context or in a \fIvolume\fR section is propagated (multiplied) to all
|
|
||||||
underlying \fIsubvolume\fR sections, unless a target with the same
|
|
||||||
declaration already exists (hint: run "btrbk config print" to see the
|
|
||||||
resulting configuration).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
For the \fIvolume\fR and \fItarget\fR sections, you can specify a
|
|
||||||
ssh\-url instead of a local directory. The syntax for \fI<url>\fR is:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
ssh://host.xz/path/to/volume
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
If a \fI<url>\fR is specified, all access to the filesystem is
|
|
||||||
performed via ssh, using the "ssh_" options described below. For
|
|
||||||
convenience, "ssh://<hostname>/<directory>" can also be specified as
|
|
||||||
"<hostname>:<directory>".
|
|
||||||
.PP
|
|
||||||
Note that btrfs is very picky on file names (mainly for security
|
|
||||||
reasons), only the characters [0\-9] [a\-z] [A\-Z] and "._+\-@" are
|
|
||||||
allowed.
|
|
||||||
.RE
|
|
||||||
.SH OPTIONS
|
|
||||||
.PP
|
|
||||||
\fBtransaction_log\fR <file>|no
|
|
||||||
.RS 4
|
|
||||||
If set, all transactions (snapshot create, subvolume send\-receive,
|
|
||||||
subvolume delete) as well as abort messages are logged to <file>, in a
|
|
||||||
space-separated table format: "localtime type status target_url
|
|
||||||
source_url parent_url message".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBtransaction_syslog\fR <facility>|no
|
|
||||||
.RS 4
|
|
||||||
If set, all transactions (as described in \fItransaction_log\fR above)
|
|
||||||
are logged to syslog. The program name used in the messages is
|
|
||||||
"btrbk". Accepted parameters for \fI<facility>\fR: user, mail, daemon,
|
|
||||||
auth, lpr, news, cron, authpriv, local0..local7.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBtimestamp_format\fR short|long|long\-iso
|
|
||||||
.RS 4
|
|
||||||
Timestamp format used as postfix for new snapshot subvolume
|
|
||||||
names. Defaults to \[lq]short\[rq].
|
|
||||||
.PP
|
|
||||||
.IP \fBshort\fR 10
|
|
||||||
YYYYMMDD[_N] (e.g. "20150825", "20150825_1")
|
|
||||||
.IP \fBlong\fR 10
|
|
||||||
YYYYMMDD<T>hhmm[_N] (e.g. "20150825T1531")
|
|
||||||
.IP \fBlong\-iso\fR 10
|
|
||||||
YYYYMMDD<T>hhmmss\[t+-]hhmm[_N] (e.g. "20150825T153123+0200")
|
|
||||||
.PP
|
|
||||||
Note that a postfix "_N" is appended to the timestamp if a snapshot or
|
|
||||||
backup already exists with the timestamp of current date/time.
|
|
||||||
.PP
|
|
||||||
Use \[lq]long\-iso\[rq] if you want to make sure that btrbk never
|
|
||||||
creates ambiguous time stamps (which can happen if multiple snapshots
|
|
||||||
are created during a daylight saving time clock change).
|
|
||||||
.PP
|
|
||||||
Note that using \[lq]long\-iso\[rq] has implications on the
|
|
||||||
scheduling, see RETENTION POLICY (caveats) below.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsnapshot_dir\fR <directory>
|
|
||||||
.RS 4
|
|
||||||
Directory in which the btrfs snapshots are created, relative to
|
|
||||||
\fI<volume\-directory>\fR of the \fIvolume\fR section. Note that btrbk
|
|
||||||
does not autmatically create this directory, and the snapshot creation
|
|
||||||
will fail if it is not present.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsnapshot_name\fR <basename>
|
|
||||||
.RS 4
|
|
||||||
Base name of the created snapshot (and backup). This option is only
|
|
||||||
valid in the \fIsubvolume\fR section. Defaults to
|
|
||||||
\fI<subvolume\-name>\fR.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsnapshot_create\fR always|onchange|ondemand|no
|
|
||||||
.RS 4
|
|
||||||
If set to \[lq]always\[rq], snapshots are always created. If set to
|
|
||||||
\[lq]onchange\[rq], snapshots are only created if the source subvolume
|
|
||||||
has changed since the last snapshot (more precisely: if the btrfs
|
|
||||||
generation has been increased since the last snapshot). If set to
|
|
||||||
\[lq]ondemand\[rq], snapshots are only created if the target subvolume
|
|
||||||
is reachable (useful if you are tight on disk space and you only need
|
|
||||||
btrbk for backups to an external disk which is not always
|
|
||||||
connected). If set to \[lq]no\[rq], the snapshots are never created
|
|
||||||
(useful if another instance of btrbk is taking care of snapshot
|
|
||||||
creation). Defaults to \[lq]always\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBincremental\fR yes|no|strict
|
|
||||||
.RS 4
|
|
||||||
If set, incremental backups are created. If set to \[lq]strict\[rq],
|
|
||||||
non-incremental (initial) backups are never created. Defaults to
|
|
||||||
\[lq]yes\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsnapshot_preserve\fR no|<retention_policy>
|
|
||||||
.RS 4
|
|
||||||
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|<number>{h,d,w,m,y}
|
|
||||||
.RS 4
|
|
||||||
Preserve all snapshots for a minimum amount of hours (h), days (d),
|
|
||||||
weeks (w), months (m) or years (y), regardless of how many there
|
|
||||||
are. If set to \[lq]all\[rq], preserve all snapshots forever. If set
|
|
||||||
to \[lq]latest\[rq], preserve latest snapshot. Defaults to
|
|
||||||
\[lq]all\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBtarget_preserve\fR no|<retention_policy>
|
|
||||||
.RS 4
|
|
||||||
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|<number>{h,d,w,m,y}
|
|
||||||
.RS 4
|
|
||||||
Preserve all backups for a minimum amount of hours (h), days (d),
|
|
||||||
weeks (w), months (m) or years (y), regardless of how many there
|
|
||||||
are. If set to \[lq]all\[rq], preserve all backups forever. If set to
|
|
||||||
\[lq]latest\[rq], always preserve the latest backup (useful in
|
|
||||||
conjunction with "target_preserve no", if you want to keep the latest
|
|
||||||
backup only). If set to \[lq]no\[rq], only the backups following the
|
|
||||||
\fItarget_preserve\fR policy are created. Defaults to \[lq]all\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBarchive_preserve\fR no|<retention_policy>
|
|
||||||
.PD 0
|
|
||||||
.PP
|
|
||||||
\fBarchive_preserve_min\fR all|latest|no|<number>{h,d,w,m,y}
|
|
||||||
.PD
|
|
||||||
.RS 4
|
|
||||||
Set retention policy for archives ("btrbk archive" command), with same
|
|
||||||
semantics as \fItarget_preserve\fR, \fItarget_preserve_min\fR.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBpreserve_day_of_week\fR monday|tuesday|...|sunday
|
|
||||||
.RS 4
|
|
||||||
Defines on what day a backup/snapshot is considered as a weekly
|
|
||||||
backup. Defaults to \[lq]sunday\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBgroup\fR <group\-name>[,<group\-name>]...
|
|
||||||
.RS 4
|
|
||||||
Add the current section (volume, subvolume or target) to a
|
|
||||||
user-defined group, which can be used as filter for several btrbk
|
|
||||||
commands.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBssh_identity\fR <file>
|
|
||||||
.RS 4
|
|
||||||
Absolute path to a ssh identity file (private key). Note that if the
|
|
||||||
private key is password protected, btrbk will prompt for user input,
|
|
||||||
which is usually not desired.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBssh_user\fR <username>
|
|
||||||
.RS 4
|
|
||||||
Remote username for ssh. Defaults to \[lq]root\[rq]. Note that you
|
|
||||||
will have to make sure that the remote user is able to run
|
|
||||||
"/sbin/btrfs" (which needs root privileges).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBssh_port\fR <port>
|
|
||||||
.RS 4
|
|
||||||
Port to connect to on the remote host. Defaults to \[lq]default\[rq]
|
|
||||||
(the port specified in \fIssh_config\fR, which defaults to 22).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBssh_compression\fR yes|no
|
|
||||||
.RS 4
|
|
||||||
Enables or disables the compression of ssh connections. Defaults to
|
|
||||||
\[lq]no\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBssh_cipher_spec\fR <cipher_spec>
|
|
||||||
.RS 4
|
|
||||||
Selects the cipher specification for encrypting the session
|
|
||||||
(comma-separated list of ciphers in order of preference). See the "\-c
|
|
||||||
cipher_spec" option in ssh(1) for more information. Defaults to
|
|
||||||
\[lq]default\[rq] (the ciphers specified in \fIssh_config\fR).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBstream_compress\fR <compress_command>|no
|
|
||||||
.RS 4
|
|
||||||
Compress the btrfs send stream before transferring it from/to remote
|
|
||||||
locations. Defaults to \[lq]no\[rq]. If enabled, make sure that
|
|
||||||
<compress_command> is available on the source and target
|
|
||||||
hosts. Supported \fI<compress_command>\fR: gzip, pigz, bzip2, pbzip2,
|
|
||||||
xz, lzo, lz4.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBstream_compress_level\fR default|<number>
|
|
||||||
.RS 4
|
|
||||||
Compression level for the specified <compress_command>. Refer to the
|
|
||||||
related man-page for details (usually [1..9], where 1 means fastest
|
|
||||||
compression). Defaults to \[lq]default\[rq] (the default compression
|
|
||||||
level of <compress_command>).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBstream_compress_threads\fR default|<number>
|
|
||||||
.RS 4
|
|
||||||
Number of threads to use for <compress_command>. Only supported for
|
|
||||||
"pigz", "pbzip2" and recent versions of "xz".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBstream_buffer\fR <size>|no \fI*experimental*\fR
|
|
||||||
.RS 4
|
|
||||||
Add a buffer to the btrfs send stream (in front of "btrfs receive"),
|
|
||||||
with a maximum size of \fI<size>\fR. This can give a speed improvement
|
|
||||||
(measured up to 20%) on both local or remote operations, but also
|
|
||||||
increases system load. A suffix of "k", "m", "g", or "%" can be added
|
|
||||||
to \fI<size>\fR to denote kilobytes (*1024), megabytes, gigabytes, or
|
|
||||||
a percentage of total physical memory. Defaults to \[lq]no\[rq]. If
|
|
||||||
enabled, make sure that the "mbuffer" command is available on the
|
|
||||||
target host.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBrate_limit\fR <rate>|no
|
|
||||||
.RS 4
|
|
||||||
Limit the transfer to a maximum of \fI<rate>\fR bytes per second. A
|
|
||||||
suffix of "k", "m", "g", or "t" can be added to denote kilobytes
|
|
||||||
(*1024), megabytes, and so on. Defaults to \[lq]no\[rq]. If enabled
|
|
||||||
for remote sources, make sure that the "pv" command is available on
|
|
||||||
the source host.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBlockfile\fR <file>|no
|
|
||||||
.RS 4
|
|
||||||
Create lockfile <file> on startup; checks lockfile before running any
|
|
||||||
btrfs commands (using perl "flock"), and exits if the lock is held by
|
|
||||||
another btrbk instance. Ignored on dryrun (\fI\-n\fR,
|
|
||||||
\fI\-\-dry\-run\fR). See also \fI\-\-lockfile\fR command-line option.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBbtrfs_commit_delete\fR after|each|no
|
|
||||||
.RS 4
|
|
||||||
If set, make sure the deletion of snapshot and backup subvolumes are
|
|
||||||
committed to disk when btrbk terminates. Defaults to \[lq]no\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBbackend\fR btrfs-progs|btrfs-progs-btrbk|btrfs-progs-sudo
|
|
||||||
.RS 4
|
|
||||||
Backend filesystem utilities to be used for btrfs specific operations. The
|
|
||||||
default \[lq]btrfs-progs\[rq] simply executes btrfs(8) commands groups
|
|
||||||
(e.g. "btrfs subvolume show").
|
|
||||||
.IP \[bu] 2
|
|
||||||
If set
|
|
||||||
to \[lq]btrfs-progs-btrbk\[rq], specific btrfs(8) commands groups
|
|
||||||
needs to be separated by a dash instead of a whitespace
|
|
||||||
(e.g. "btrfs-subvolume-show" instead of "btrfs subvolume
|
|
||||||
show"). Useful for setting suid or file capabilities (setcap) on
|
|
||||||
specific btrfs commands, as implemented in
|
|
||||||
<https://github.com/digint/btrfs-progs-btrbk>.
|
|
||||||
.IP \[bu] 2
|
|
||||||
If set to \[lq]btrfs-progs-sudo\[rq], btrfs commands are prefixed with
|
|
||||||
"sudo -n" (e.g. "sudo -n btrfs subvolume show" instead of "btrfs
|
|
||||||
subvolume show"). Make sure to have apropriate (root) permissions for
|
|
||||||
"btrfs" command groups in /etc/sudoers.
|
|
||||||
.PP
|
|
||||||
For convenience, it is also possible to set \fIbackend_local\fR or
|
|
||||||
\fIbackend_remote\fR options, which will override the backend only for
|
|
||||||
local or remote sources/targets (e.g. "backend_remote
|
|
||||||
btrfs-progs-btrbk").
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBsnapshot_qgroup_destroy\fR yes|no \fI*experimental*\fR
|
|
||||||
.PD 0
|
|
||||||
.PP
|
|
||||||
\fBtarget_qgroup_destroy\fR yes|no \fI*experimental*\fR
|
|
||||||
.PP
|
|
||||||
\fBarchive_qgroup_destroy\fR yes|no \fI*experimental*\fR
|
|
||||||
.PD
|
|
||||||
.RS 4
|
|
||||||
Whenever a subvolume is deleted, also destroy corresponding default
|
|
||||||
qgroup "0/<subvol-id>". Only useful if you have enabled btrfs quota
|
|
||||||
support. See also: <https://bugzilla.kernel.org/show_bug.cgi?id=91751>
|
|
||||||
.RE
|
|
||||||
.SH RETENTION POLICY
|
|
||||||
btrbk uses separate retention policies for snapshots and backups,
|
|
||||||
which are defined by the \fIsnapshot_preserve_min\fR,
|
|
||||||
\fIsnapshot_preserve\fR, \fItarget_preserve_min\fR,
|
|
||||||
\fItarget_preserve\fR, and the \fIpreserve_day_of_week\fR
|
|
||||||
configuration options.
|
|
||||||
.PP
|
|
||||||
Within this section, any statement about "backups" is always valid for
|
|
||||||
backups as well as snapshots, referring to \fItarget_preserve\fR or
|
|
||||||
\fIsnapshot_preserve\fR respectively.
|
|
||||||
.PP
|
|
||||||
The format for \fI<retention_policy>\fR is:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
[<hourly>h] [<daily>d] [<weekly>w] [<monthly>m] [<yearly>y]
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
With the following semantics:
|
|
||||||
.PP
|
|
||||||
.B hourly
|
|
||||||
.RS 4
|
|
||||||
Defines how many hours back hourly backups should be preserved. The
|
|
||||||
first backup of an hour is considered an hourly backup. Note that if
|
|
||||||
you use <hourly> scheduling, make sure to also set
|
|
||||||
\fItimestamp_format\fR to \[lq]long\[rq] or \[lq]long\-iso\[rq], or
|
|
||||||
the scheduler will interpret the time as "00:00" (midnight).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B daily
|
|
||||||
.RS 4
|
|
||||||
Defines how many days back daily backups should be preserved. The
|
|
||||||
first backup of a day is considered a daily backup.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B weekly
|
|
||||||
.RS 4
|
|
||||||
Defines how many weeks back weekly backups should be preserved. The
|
|
||||||
first daily backup created at \fIpreserve_day_of_week\fR (or the first
|
|
||||||
backup in this week if none was made on the exact day) is considered
|
|
||||||
as a weekly backup.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B monthly
|
|
||||||
.RS 4
|
|
||||||
Defines how many months back monthly backups should be
|
|
||||||
preserved. Every first weekly backup in a month is considered a
|
|
||||||
monthly backup.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B yearly
|
|
||||||
.RS 4
|
|
||||||
Defines for how many years back yearly backups should be
|
|
||||||
preserved. Every first monthly backup in a year is considered a yearly
|
|
||||||
backup.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
Use an asterisk for \[lq]all\[rq] (e.g. "target_preserve 60d *m"
|
|
||||||
states: "preserve daily backups for 60 days back, and all monthly
|
|
||||||
backups").
|
|
||||||
.PP
|
|
||||||
The reference time (which defines the beginning of a day, week, month
|
|
||||||
or year) for all date/time calculations is the local time of the host
|
|
||||||
running btrbk.
|
|
||||||
.PP
|
|
||||||
Caveats:
|
|
||||||
.IP \[bu] 2
|
|
||||||
If you run a setup with several btrbk instances (e.g. one
|
|
||||||
snapshot-only instance per remote client, and a separate fetch-only
|
|
||||||
instance on the backup server), it makes perfectly sense to run btrbk
|
|
||||||
with different local time on the clients, in order to make sure the
|
|
||||||
backups from all the remote hosts are preserved for "midnight", and
|
|
||||||
not at "00:00 UTC" (which would be "14:00" in Honolulu). If you want
|
|
||||||
this behaviour, do NOT use "timestamp_format long\-iso".
|
|
||||||
.IP \[bu] 2
|
|
||||||
If "timestamp_format long\-iso" is set, running btrbk from different
|
|
||||||
time zones leads to different interpretation of "first in day, week,
|
|
||||||
month, or year". Make sure to run btrbk with the same time zone on
|
|
||||||
every host, e.g. by setting the TZ environment variable (see
|
|
||||||
tzset(3)).
|
|
||||||
.SH TARGET TYPES
|
|
||||||
.PP
|
|
||||||
\fBsend\-receive\fR
|
|
||||||
.RS 4
|
|
||||||
Backup to a btrfs filesystem, using "btrfs send/receive". This is the
|
|
||||||
recommended (standard) target type. The \fI<target\-directory>\fR must
|
|
||||||
be an absolute path and point to a btrfs volume (or subvolume), or to
|
|
||||||
a directory within a subvolume. See btrfs\-send(8), btrfs\-receive(8).
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\fBraw\fR \fI*experimental*\fR
|
|
||||||
.RS 4
|
|
||||||
Backup to a raw (filesystem independent) file from the output of
|
|
||||||
btrfs\-send(8), with optional compression and encryption.
|
|
||||||
.PP
|
|
||||||
Note that the target preserve mechanism is currently disabled for
|
|
||||||
incremental raw backups (btrbk does not delete any incremental raw
|
|
||||||
files)!
|
|
||||||
.PP
|
|
||||||
Additional options for raw targets:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
raw_target_compress gzip|pigz|bzip2|pbzip2|xz|lzo|lz4|no
|
|
||||||
.PD 0
|
|
||||||
.PP
|
|
||||||
raw_target_compress_level default|<number>
|
|
||||||
.PP
|
|
||||||
raw_target_compress_threads default|<number>
|
|
||||||
.PP
|
|
||||||
raw_target_split <size>|no
|
|
||||||
.PP
|
|
||||||
raw_target_block_size <number> (defaults to 128K)
|
|
||||||
.PP
|
|
||||||
raw_target_encrypt gpg|openssl_enc|no
|
|
||||||
.RE
|
|
||||||
.PD
|
|
||||||
.PP
|
|
||||||
Additional options for "raw_target_encrypt gpg":
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
gpg_keyring <file>
|
|
||||||
.PD 0
|
|
||||||
.PP
|
|
||||||
gpg_recipient <name>
|
|
||||||
.RE
|
|
||||||
.PD
|
|
||||||
.PP
|
|
||||||
Additional options for "raw_target_encrypt openssl_enc" (\fIvery
|
|
||||||
experimental\fR):
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
openssl_ciphername <name> (defaults to "aes-256-cbc")
|
|
||||||
.PD 0
|
|
||||||
.PP
|
|
||||||
openssl_iv_size <size-in-bytes>|no (depends on selected cipher)
|
|
||||||
.PP
|
|
||||||
openssl_keyfile <file>|no
|
|
||||||
.PP
|
|
||||||
kdf_backend <file>|no
|
|
||||||
.PP
|
|
||||||
kdf_keysize <size> (defaults to "32")
|
|
||||||
.PP
|
|
||||||
kdf_keygen once|each (defaults to "once")
|
|
||||||
.RE
|
|
||||||
.PD
|
|
||||||
.PP
|
|
||||||
Raw backups consist of two files: the main data file containing the
|
|
||||||
btrfs send stream, and a sidecar file ".info" containing metadata:
|
|
||||||
.RS 4
|
|
||||||
.PP
|
|
||||||
<snapshot\-name>.<timestamp>[_N].btrfs[.gz|.bz2|.xz][.gpg]
|
|
||||||
<snapshot\-name>.<timestamp>[_N].btrfs[.gz|.bz2|.xz][.gpg].info
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
For \fIincremental\fR backups ("incremental yes"), please note that:
|
|
||||||
.IP 1. 4
|
|
||||||
As soon as a single \fIincremental\fR backup file is lost or
|
|
||||||
corrupted, all later incremental backups become invalid, as there is
|
|
||||||
no common parent for the subsequent incremental images anymore. This
|
|
||||||
might be a good compromise for a vacation backup plan, but for the
|
|
||||||
long term make sure that a non-incremental backup is triggered from
|
|
||||||
time to time.
|
|
||||||
.IP 2. 4
|
|
||||||
There is currently no support for rotation of incremental backups: if
|
|
||||||
\fIincremental\fR is set, a full backup must be triggered manually
|
|
||||||
from time to time in order to be able to delete old backups.
|
|
||||||
.RE
|
|
||||||
.SH AVAILABILITY
|
|
||||||
Please refer to the btrbk project page \fBhttp://digint.ch/btrbk/\fR
|
|
||||||
for further details.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR btrbk (1)
|
|
||||||
.SH AUTHOR
|
|
||||||
Axel Burri <axel@tty0.ch>
|
|
|
@ -0,0 +1,436 @@
|
||||||
|
btrbk.conf(5)
|
||||||
|
=============
|
||||||
|
:date: 2017-10-09
|
||||||
|
:revision: 0.26.0-dev
|
||||||
|
:man manual: Btrbk Manual
|
||||||
|
:man source: Btrbk
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
|
||||||
|
btrbk.conf - btrbk configuration file
|
||||||
|
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
[literal]
|
||||||
|
/etc/btrbk.conf
|
||||||
|
/etc/btrbk/btrbk.conf
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
The btrbk configuration file specifies which btrfs subvolumes on the
|
||||||
|
filesystem are to be processed, what target subvolumes should be used
|
||||||
|
to create the backups, and where the snapshots should be
|
||||||
|
generated. The retention policy, as well as most other options can be
|
||||||
|
defined either globally or within a section.
|
||||||
|
|
||||||
|
The options specified always apply to the last section encountered,
|
||||||
|
superseding the values set in upper-level sections. This means that
|
||||||
|
global options must be set before any sections are defined.
|
||||||
|
|
||||||
|
Blank lines are ignored. A hash character (#) starts a comment
|
||||||
|
extending until end of line.
|
||||||
|
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
--------
|
||||||
|
|
||||||
|
*volume* <volume-directory>|<url>::
|
||||||
|
Directory of a btrfs volume containing the source subvolume(s)
|
||||||
|
to be backed up. '<volume-directory>' must be an absolute path
|
||||||
|
and point to a btrfs volume (or subvolume). Usually the mount
|
||||||
|
point of a btrfs filesystem mounted with the 'subvolid=0'
|
||||||
|
option.
|
||||||
|
|
||||||
|
*subvolume* <subvolume-name>::
|
||||||
|
Subvolume to be backed up, relative to the '<volume-directory>'
|
||||||
|
specified in the 'volume' section. Multiple 'subvolume' sections
|
||||||
|
are allowed within 'volume' sections. Accepts wildcard character
|
||||||
|
"*".
|
||||||
|
|
||||||
|
*target* <type> <target-directory>|<url>::
|
||||||
|
Target type and directory where the backup subvolumes are to be
|
||||||
|
created. See the <<_target_types,TARGET TYPES>> section for
|
||||||
|
supported '<type>'. Multiple 'target' sections are allowed within
|
||||||
|
'subvolume' sections. A 'target' section defined in the global
|
||||||
|
context or in a 'volume' section is propagated (multiplied) to all
|
||||||
|
underlying 'subvolume' sections, unless a target with the same
|
||||||
|
declaration already exists (hint: run "btrbk config print" to see
|
||||||
|
the resulting configuration).
|
||||||
|
|
||||||
|
For the 'volume' and 'target' sections, you can specify a ssh-url
|
||||||
|
instead of a local directory. The syntax for '<url>' is:
|
||||||
|
|
||||||
|
ssh://host.xz/path/to/volume
|
||||||
|
|
||||||
|
If a '<url>' is specified, all access to the filesystem is performed
|
||||||
|
via ssh, using the "ssh_" options described below. For convenience,
|
||||||
|
"+ssh://<hostname>/<directory>+" can also be specified as
|
||||||
|
"+<hostname>:<directory>+".
|
||||||
|
|
||||||
|
Note that btrfs is very picky on file names (mainly for security
|
||||||
|
reasons), only the characters [0-9] [a-z] [A-Z] and "._+-@" are
|
||||||
|
allowed.
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
*transaction_log* <file>|no::
|
||||||
|
If set, all transactions (snapshot create, subvolume send-receive,
|
||||||
|
subvolume delete) as well as abort messages are logged to <file>,
|
||||||
|
in a space-separated table format: "localtime type status
|
||||||
|
target_url source_url parent_url message".
|
||||||
|
|
||||||
|
*transaction_syslog* <facility>|no::
|
||||||
|
If set, all transactions (as described in 'transaction_log' above)
|
||||||
|
are logged to syslog. The program name used in the messages is
|
||||||
|
"btrbk". Accepted parameters for '<facility>': user, mail,
|
||||||
|
daemon, auth, lpr, news, cron, authpriv, local0..local7.
|
||||||
|
|
||||||
|
*timestamp_format* short|long|long-iso::
|
||||||
|
Timestamp format used as postfix for new snapshot subvolume
|
||||||
|
names. Defaults to ``short''.
|
||||||
|
+
|
||||||
|
--
|
||||||
|
*short*;; `YYYYMMDD[_N]` (e.g. "20150825", "20150825_1")
|
||||||
|
*long*;; `YYYYMMDD<T>hhmm[_N]` (e.g. "20150825T1531")
|
||||||
|
*long-iso*;; `YYYYMMDD<T>hhmmss±hhmm[_N]` (e.g. "20150825T153123+0200")
|
||||||
|
--
|
||||||
|
+
|
||||||
|
Note that a postfix "_N" is appended to the timestamp if a snapshot or
|
||||||
|
backup already exists with the timestamp of current date/time.
|
||||||
|
+
|
||||||
|
Use ``long-iso'' if you want to make sure that btrbk never
|
||||||
|
creates ambiguous time stamps (which can happen if multiple
|
||||||
|
snapshots are created during a daylight saving time clock
|
||||||
|
change).
|
||||||
|
+
|
||||||
|
Note that using ``long-iso'' has implications on the scheduling, see
|
||||||
|
<<_retention_policy,RETENTION POLICY>> (caveats) below.
|
||||||
|
|
||||||
|
*snapshot_dir* <directory>::
|
||||||
|
Directory in which the btrfs snapshots are created, relative to
|
||||||
|
'<volume-directory>' of the 'volume' section. Note that btrbk does
|
||||||
|
not autmatically create this directory, and the snapshot creation
|
||||||
|
will fail if it is not present.
|
||||||
|
|
||||||
|
*snapshot_name* <basename>::
|
||||||
|
Base name of the created snapshot (and backup). This option is
|
||||||
|
only valid in the 'subvolume' section. Defaults to
|
||||||
|
'<subvolume-name>'.
|
||||||
|
|
||||||
|
*snapshot_create* always|onchange|ondemand|no::
|
||||||
|
If set to ``always'', snapshots are always created. If set to
|
||||||
|
``onchange'', snapshots are only created if the source subvolume
|
||||||
|
has changed since the last snapshot (more precisely: if the btrfs
|
||||||
|
generation has been increased since the last snapshot). If set to
|
||||||
|
``ondemand'', snapshots are only created if the target subvolume
|
||||||
|
is reachable (useful if you are tight on disk space and you only
|
||||||
|
need btrbk for backups to an external disk which is not always
|
||||||
|
connected). If set to ``no'', the snapshots are never created
|
||||||
|
(useful if another instance of btrbk is taking care of snapshot
|
||||||
|
creation). Defaults to ``always''.
|
||||||
|
|
||||||
|
*incremental* yes|no|strict::
|
||||||
|
If set, incremental backups are created. If set to ``strict'',
|
||||||
|
non-incremental (initial) backups are never created. Defaults to
|
||||||
|
``yes''.
|
||||||
|
|
||||||
|
*snapshot_preserve* no|<retention_policy>::
|
||||||
|
Set retention policy for snapshots (see
|
||||||
|
<<_retention_policy,RETENTION POLICY>> below). If set to ``no'',
|
||||||
|
preserve snapshots according to 'snapshot_preserve_min'
|
||||||
|
only. Defaults to ``no''.
|
||||||
|
|
||||||
|
*snapshot_preserve_min* all|latest|<number>{h,d,w,m,y}::
|
||||||
|
Preserve all snapshots for a minimum amount of hours (h), days
|
||||||
|
(d), weeks (w), months (m) or years (y), regardless of how many
|
||||||
|
there are. If set to ``all'', preserve all snapshots forever. If
|
||||||
|
set to ``latest'', preserve latest snapshot. Defaults to ``all''.
|
||||||
|
|
||||||
|
*target_preserve* no|<retention_policy>::
|
||||||
|
Set retention policy for backups (see
|
||||||
|
<<_retention_policy,RETENTION POLICY>> below). If set to ``no'',
|
||||||
|
preserve backups according to 'target_preserve_min' only. Defaults
|
||||||
|
to ``no''.
|
||||||
|
|
||||||
|
*target_preserve_min* all|latest|no|<number>{h,d,w,m,y}::
|
||||||
|
Preserve all backups for a minimum amount of hours (h), days (d),
|
||||||
|
weeks (w), months (m) or years (y), regardless of how many there
|
||||||
|
are. If set to ``all'', preserve all backups forever. If set to
|
||||||
|
``latest'', always preserve the latest backup (useful in
|
||||||
|
conjunction with "target_preserve no", if you want to keep the
|
||||||
|
latest backup only). If set to ``no'', only the backups following
|
||||||
|
the 'target_preserve' policy are created. Defaults to ``all''.
|
||||||
|
|
||||||
|
*archive_preserve* no|<retention_policy>:: {blank}
|
||||||
|
*archive_preserve_min* all|latest|no|<number>{h,d,w,m,y}::
|
||||||
|
Set retention policy for archives ("btrbk archive" command), with
|
||||||
|
same semantics as 'target_preserve', 'target_preserve_min'.
|
||||||
|
|
||||||
|
*preserve_day_of_week* monday|tuesday|...|sunday"::
|
||||||
|
Defines on what day a backup/snapshot is considered as a weekly
|
||||||
|
backup. Defaults to ``sunday''.
|
||||||
|
|
||||||
|
*group* <group-name>[,<group-name>]...::
|
||||||
|
Add the current section (volume, subvolume or target) to a
|
||||||
|
user-defined group, which can be used as filter for several btrbk
|
||||||
|
commands.
|
||||||
|
|
||||||
|
*ssh_identity* <file>::
|
||||||
|
Absolute path to a ssh identity file (private key). Note that if
|
||||||
|
the private key is password protected, btrbk will prompt for user
|
||||||
|
input, which is usually not desired.
|
||||||
|
|
||||||
|
*ssh_user* <username>::
|
||||||
|
Remote username for ssh. Defaults to ``root''. Note that you will
|
||||||
|
have to make sure that the remote user is able to run
|
||||||
|
"/sbin/btrfs" (which needs root privileges).
|
||||||
|
|
||||||
|
*ssh_port* <port>::
|
||||||
|
Port to connect to on the remote host. Defaults to ``default''
|
||||||
|
(the port specified in 'ssh_config', which defaults to 22).
|
||||||
|
|
||||||
|
*ssh_compression* yes|no::
|
||||||
|
Enables or disables the compression of ssh connections. Defaults
|
||||||
|
to ``no''.
|
||||||
|
|
||||||
|
*ssh_cipher_spec* <cipher_spec>::
|
||||||
|
Selects the cipher specification for encrypting the session
|
||||||
|
(comma-separated list of ciphers in order of preference). See the
|
||||||
|
"-c cipher_spec" option in ssh(1) for more information. Defaults
|
||||||
|
to ``default'' (the ciphers specified in 'ssh_config').
|
||||||
|
|
||||||
|
*stream_compress* <compress_command>|no::
|
||||||
|
Compress the btrfs send stream before transferring it from/to
|
||||||
|
remote locations. Defaults to ``no''. If enabled, make sure that
|
||||||
|
<compress_command> is available on the source and target
|
||||||
|
hosts. Supported '<compress_command>': gzip, pigz, bzip2, pbzip2,
|
||||||
|
xz, lzo, lz4.
|
||||||
|
|
||||||
|
*stream_compress_level* default|<number>::
|
||||||
|
Compression level for the specified <compress_command>. Refer to
|
||||||
|
the related man-page for details (usually [1..9], where 1 means
|
||||||
|
fastest compression). Defaults to ``default'' (the default
|
||||||
|
compression level of <compress_command>).
|
||||||
|
|
||||||
|
*stream_compress_threads* default|<number>::
|
||||||
|
Number of threads to use for <compress_command>. Only supported
|
||||||
|
for "pigz", "pbzip2" and recent versions of "xz".
|
||||||
|
|
||||||
|
*stream_buffer* <size>|no _*experimental*_::
|
||||||
|
Add a buffer to the btrfs send stream (in front of "btrfs
|
||||||
|
receive"), with a maximum size of '<size>'. This can give a speed
|
||||||
|
improvement (measured up to 20%) on both local or remote
|
||||||
|
operations, but also increases system load. A suffix of "k", "m",
|
||||||
|
"g", or "%" can be added to '<size>' to denote kilobytes (*1024),
|
||||||
|
megabytes, gigabytes, or a percentage of total physical
|
||||||
|
memory. Defaults to ``no''. If enabled, make sure that the
|
||||||
|
"mbuffer" command is available on the target host.
|
||||||
|
|
||||||
|
*rate_limit* <rate>|no::
|
||||||
|
Limit the transfer to a maximum of '<rate>' bytes per second. A
|
||||||
|
suffix of "k", "m", "g", or "t" can be added to denote kilobytes
|
||||||
|
(*1024), megabytes, and so on. Defaults to ``no''. If enabled for
|
||||||
|
remote sources, make sure that the "pv" command is available on
|
||||||
|
the source host.
|
||||||
|
|
||||||
|
*lockfile* <file>|no::
|
||||||
|
Create lockfile <file> on startup; checks lockfile before running
|
||||||
|
any btrfs commands (using perl "flock"), and exits if the lock is
|
||||||
|
held by another btrbk instance. Ignored on dryrun ('-n',
|
||||||
|
'--dry-run'). See also '--lockfile' command-line option.
|
||||||
|
|
||||||
|
*btrfs_commit_delete* after|each|no::
|
||||||
|
If set, make sure the deletion of snapshot and backup subvolumes
|
||||||
|
are committed to disk when btrbk terminates. Defaults to ``no''.
|
||||||
|
|
||||||
|
*backend* btrfs-progs|btrfs-progs-btrbk|btrfs-progs-sudo::
|
||||||
|
Backend filesystem utilities to be used for btrfs specific
|
||||||
|
operations. The default ``btrfs-progs'' simply executes btrfs(8)
|
||||||
|
commands groups (e.g. "btrfs subvolume show").
|
||||||
|
+
|
||||||
|
--
|
||||||
|
* If set to ``btrfs-progs-btrbk'', specific btrfs(8) commands groups
|
||||||
|
needs to be separated by a dash instead of a whitespace
|
||||||
|
(e.g. "btrfs-subvolume-show" instead of "btrfs subvolume
|
||||||
|
show"). Useful for setting suid or file capabilities (setcap) on
|
||||||
|
specific btrfs commands, as implemented in
|
||||||
|
<https://github.com/digint/btrfs-progs-btrbk>.
|
||||||
|
* If set to ``btrfs-progs-sudo'', btrfs commands are prefixed with
|
||||||
|
"sudo -n" (e.g. "sudo -n btrfs subvolume show" instead of "btrfs
|
||||||
|
subvolume show"). Make sure to have apropriate (root) permissions
|
||||||
|
for "btrfs" command groups in /etc/sudoers.
|
||||||
|
--
|
||||||
|
+
|
||||||
|
For convenience, it is also possible to set 'backend_local' or
|
||||||
|
'backend_remote' options, which will override the backend only for
|
||||||
|
local or remote sources/targets (e.g. "backend_remote
|
||||||
|
btrfs-progs-btrbk").
|
||||||
|
|
||||||
|
*snapshot_qgroup_destroy* yes|no _*experimental*_:: {blank}
|
||||||
|
*target_qgroup_destroy* yes|no _*experimental*_:: {blank}
|
||||||
|
*archive_qgroup_destroy* yes|no _*experimental*_::
|
||||||
|
Whenever a subvolume is deleted, also destroy corresponding
|
||||||
|
default qgroup "0/<subvol-id>". Only useful if you have enabled
|
||||||
|
btrfs quota support. See also:
|
||||||
|
<https://bugzilla.kernel.org/show_bug.cgi?id=91751>
|
||||||
|
|
||||||
|
|
||||||
|
RETENTION POLICY
|
||||||
|
----------------
|
||||||
|
|
||||||
|
btrbk uses separate retention policies for snapshots and backups,
|
||||||
|
which are defined by the 'snapshot_preserve_min', 'snapshot_preserve',
|
||||||
|
'target_preserve_min', 'target_preserve', and the
|
||||||
|
'preserve_day_of_week' configuration options.
|
||||||
|
|
||||||
|
Within this section, any statement about "backups" is always valid for
|
||||||
|
backups as well as snapshots, referring to 'target_preserve' or
|
||||||
|
'snapshot_preserve' respectively.
|
||||||
|
|
||||||
|
The format for '<retention_policy>' is:
|
||||||
|
|
||||||
|
[<hourly>h] [<daily>d] [<weekly>w] [<monthly>m] [<yearly>y]
|
||||||
|
|
||||||
|
With the following semantics:
|
||||||
|
|
||||||
|
*hourly*::
|
||||||
|
Defines how many hours back hourly backups should be
|
||||||
|
preserved. The first backup of an hour is considered an hourly
|
||||||
|
backup. Note that if you use <hourly> scheduling, make sure to
|
||||||
|
also set 'timestamp_format' to ``long'' or ``long-iso'', or the
|
||||||
|
scheduler will interpret the time as "00:00" (midnight).
|
||||||
|
|
||||||
|
*daily*::
|
||||||
|
Defines how many days back daily backups should be preserved. The
|
||||||
|
first backup of a day is considered a daily backup.
|
||||||
|
|
||||||
|
*weekly*::
|
||||||
|
Defines how many weeks back weekly backups should be
|
||||||
|
preserved. The first daily backup created at
|
||||||
|
'preserve_day_of_week' (or the first backup in this week if none
|
||||||
|
was made on the exact day) is considered as a weekly backup.
|
||||||
|
|
||||||
|
*monthly*::
|
||||||
|
Defines how many months back monthly backups should be
|
||||||
|
preserved. Every first weekly backup in a month is considered a
|
||||||
|
monthly backup.
|
||||||
|
|
||||||
|
*yearly*::
|
||||||
|
Defines for how many years back yearly backups should be
|
||||||
|
preserved. Every first monthly backup in a year is considered a
|
||||||
|
yearly backup.
|
||||||
|
|
||||||
|
Use an asterisk for ``all'' (e.g. "target_preserve 60d *m"
|
||||||
|
states: "preserve daily backups for 60 days back, and all monthly
|
||||||
|
backups").
|
||||||
|
|
||||||
|
The reference time (which defines the beginning of a day, week, month
|
||||||
|
or year) for all date/time calculations is the local time of the host
|
||||||
|
running btrbk.
|
||||||
|
|
||||||
|
Caveats:
|
||||||
|
|
||||||
|
* If you run a setup with several btrbk instances (e.g. one
|
||||||
|
snapshot-only instance per remote client, and a separate fetch-only
|
||||||
|
instance on the backup server), it makes perfectly sense to run
|
||||||
|
btrbk with different local time on the clients, in order to make
|
||||||
|
sure the backups from all the remote hosts are preserved for
|
||||||
|
"midnight", and not at "00:00 UTC" (which would be "14:00" in
|
||||||
|
Honolulu). If you want this behaviour, do NOT use "timestamp_format
|
||||||
|
long-iso".
|
||||||
|
|
||||||
|
* If "timestamp_format long-iso" is set, running btrbk from different
|
||||||
|
time zones leads to different interpretation of "first in day, week,
|
||||||
|
month, or year". Make sure to run btrbk with the same time zone on
|
||||||
|
every host, e.g. by setting the TZ environment variable (see
|
||||||
|
tzset(3)).
|
||||||
|
|
||||||
|
|
||||||
|
TARGET TYPES
|
||||||
|
------------
|
||||||
|
|
||||||
|
*send-receive*::
|
||||||
|
Backup to a btrfs filesystem, using "btrfs send/receive". This is
|
||||||
|
the recommended (standard) target type. The '<target-directory>'
|
||||||
|
must be an absolute path and point to a btrfs volume (or
|
||||||
|
subvolume), or to a directory within a subvolume. See
|
||||||
|
btrfs-send(8), btrfs-receive(8).
|
||||||
|
|
||||||
|
*raw* _*experimental*_::
|
||||||
|
Backup to a raw (filesystem independent) file from the output of
|
||||||
|
btrfs-send(8), with optional compression and encryption.
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Note that the target preserve mechanism is currently disabled for
|
||||||
|
incremental raw backups (btrbk does not delete any incremental raw
|
||||||
|
files)!
|
||||||
|
|
||||||
|
Additional options for raw targets:
|
||||||
|
|
||||||
|
*raw_target_compress* gzip|pigz|bzip2|pbzip2|xz|lzo|lz4|no:: {blank}
|
||||||
|
*raw_target_compress_level* default|<number>:: {blank}
|
||||||
|
*raw_target_compress_threads* default|<number>:: {blank}
|
||||||
|
*raw_target_split* <size>|no:: {blank}
|
||||||
|
*raw_target_block_size* <number> (defaults to 128K):: {blank}
|
||||||
|
*raw_target_encrypt* gpg|openssl_enc|no:: {blank}
|
||||||
|
|
||||||
|
Additional options for "raw_target_encrypt gpg":
|
||||||
|
|
||||||
|
*gpg_keyring* <file>:: {blank}
|
||||||
|
*gpg_recipient* <name>:: {blank}
|
||||||
|
|
||||||
|
Additional options for "raw_target_encrypt openssl_enc" ('very
|
||||||
|
experimental'):
|
||||||
|
|
||||||
|
*openssl_ciphername* <name> (defaults to ``aes-256-cbc''):: {blank}
|
||||||
|
*openssl_iv_size* <size-in-bytes>|no (depends on selected cipher):: {blank}
|
||||||
|
*openssl_keyfile* <file>|no:: {blank}
|
||||||
|
*kdf_backend* <file>|no:: {blank}
|
||||||
|
*kdf_keysize* <size> (defaults to ``32''):: {blank}
|
||||||
|
*kdf_keygen* once|each (defaults to ``once''):: {blank}
|
||||||
|
|
||||||
|
Raw backups consist of two files: the main data file containing the
|
||||||
|
btrfs send stream, and a sidecar file ".info" containing metadata:
|
||||||
|
|
||||||
|
<snapshot-name>.<timestamp>[_N].btrfs[.gz|.bz2|.xz][.gpg]
|
||||||
|
<snapshot-name>.<timestamp>[_N].btrfs[.gz|.bz2|.xz][.gpg].info
|
||||||
|
|
||||||
|
For 'incremental' backups ("incremental yes"), please note that:
|
||||||
|
|
||||||
|
* As soon as a single 'incremental' backup file is lost or corrupted,
|
||||||
|
all later incremental backups become invalid, as there is no common
|
||||||
|
parent for the subsequent incremental images anymore. This might be
|
||||||
|
a good compromise for a vacation backup plan, but for the long term
|
||||||
|
make sure that a non-incremental backup is triggered from time to
|
||||||
|
time.
|
||||||
|
|
||||||
|
* There is currently no support for rotation of incremental backups:
|
||||||
|
if 'incremental' is set, a full backup must be triggered manually
|
||||||
|
from time to time in order to be able to delete old backups.
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
AVAILABILITY
|
||||||
|
------------
|
||||||
|
|
||||||
|
Please refer to the btrbk project page *<http://digint.ch/btrbk/>*
|
||||||
|
for further details.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
|
||||||
|
*btrbk*(1)
|
||||||
|
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
------
|
||||||
|
Axel Burri <axel@tty0.ch>
|
|
@ -1,107 +0,0 @@
|
||||||
.TH "ssh_filter_btrbk" "1" "2017-08-21" "btrbk v0.26.0-dev" ""
|
|
||||||
.\" disable hyphenation
|
|
||||||
.nh
|
|
||||||
.\" disable justification (adjust text to left margin only)
|
|
||||||
.ad l
|
|
||||||
.SH NAME
|
|
||||||
ssh_filter_btrbk.sh \- ssh command filter script for btrbk
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.nf
|
|
||||||
\fBssh_filter_btrbk.sh\fR [\-s|\-\-source] [\-t|\-\-target] [\-d|\-\-delete] [\-i|\-\-info]
|
|
||||||
[\-p|\-\-restrict\-path <path>] [\-l|\-\-log] [\-\-sudo]
|
|
||||||
.fi
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBssh_filter_btrbk.sh\fR restricts SSH commands to \fIbtrfs\fR
|
|
||||||
commands used by \fIbtrbk\fR. It examines the SSH_ORIGINAL_COMMAND
|
|
||||||
environment variable (set by sshd) and executes it only if it matches
|
|
||||||
commands used by \fIbtrbk\fR. The accepted commands are specified by
|
|
||||||
the "\-\-source", "\-\-target", "\-\-delete" and "\-\-info" options.
|
|
||||||
.PP
|
|
||||||
Note that the following btrfs commands are always allowed: "btrfs
|
|
||||||
subvolume show", "btrfs subvolume list".
|
|
||||||
.PP
|
|
||||||
Note that commands for stream compression (pipes through gzip, pigz,
|
|
||||||
bzip2, pbzip2, xz, lzop, lz4), rate limiting (pipes through "pv -L"),
|
|
||||||
and stream buffer (pipes through "mbuffer") are always allowed.
|
|
||||||
.PP
|
|
||||||
Example line in /root/.ssh/authorized_keys on a backup target host:
|
|
||||||
.PP
|
|
||||||
.RS 4
|
|
||||||
.nf
|
|
||||||
command="ssh_filter_btrbk.sh \-\-target \-\-delete \-\-restrict\-path /mnt/btr_backup" ssh\-rsa AAAAB3NzaC1...hwumXFRQBL btrbk@mydomain.com
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.SH OPTIONS
|
|
||||||
.PP
|
|
||||||
\-s, \-\-source
|
|
||||||
.RS 4
|
|
||||||
Allow commands for backup source: "btrfs subvolume snapshot", "btrfs
|
|
||||||
send". Equivalent to "\-\-snapshot \-\-send".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-t, \-\-target
|
|
||||||
.RS 4
|
|
||||||
Allow commands for backup target: "btrfs receive", "realpath" and "cat
|
|
||||||
/proc/self/mounts".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-d, \-\-delete
|
|
||||||
.RS 4
|
|
||||||
Allow commands for subvolume deletion: "btrfs subvolume delete". This
|
|
||||||
is used for backup source if \fIsnapshot_preserve_daily\fR is not set
|
|
||||||
to \[lq]all\[rq], and for backup targets if
|
|
||||||
\fItarget_preserve_daily\fR is not set to \[lq]all\[rq].
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-c, \-\-compress
|
|
||||||
.RS 4
|
|
||||||
Allow commands for stream compression (pipes through gzip, pigz,
|
|
||||||
bzip2, pbzip2, xz, lzo, lz4). Needed if \fIstream_compress\fR is set.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-i, \-\-info
|
|
||||||
.RS 4
|
|
||||||
Allow informative commands: "btrfs subvolume find\-new", "btrfs
|
|
||||||
filesystem usage". This is used by btrbk \fIinfo\fR and \fIdiff\fR
|
|
||||||
commands.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-snapshot
|
|
||||||
.RS 4
|
|
||||||
Allow btrfs snapshot command: "btrfs subvolume snapshot".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-send
|
|
||||||
.RS 4
|
|
||||||
Allow btrfs send command: "btrfs send".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-receive
|
|
||||||
.RS 4
|
|
||||||
Allow btrfs receive command: "btrfs receive".
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-p, \-\-restrict\-path <path>
|
|
||||||
.RS 4
|
|
||||||
Restrict btrfs commands to <path>.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-l, \-\-log
|
|
||||||
.RS 4
|
|
||||||
Log ACCEPT and REJECT messages to the system log.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-sudo
|
|
||||||
.RS 4
|
|
||||||
Allow btrfs commands to be called via sudo. Enable this if you have
|
|
||||||
"backend btrfs-progs-sudo" in your btrbk configuration file.
|
|
||||||
.RE
|
|
||||||
.SH AVAILABILITY
|
|
||||||
Please refer to the btrbk project page \fBhttp://digint.ch/btrbk/\fR
|
|
||||||
for further details.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR btrbk (1),
|
|
||||||
.BR btrbk.conf (5),
|
|
||||||
.BR btrfs (1)
|
|
||||||
.SH AUTHOR
|
|
||||||
Axel Burri <axel@tty0.ch>
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
ssh_filter_btrbk(1)
|
||||||
|
===================
|
||||||
|
:date: 2017-10-09
|
||||||
|
:revision: 0.26.0-dev
|
||||||
|
:man manual: Btrbk Manual
|
||||||
|
:man source: Btrbk
|
||||||
|
|
||||||
|
|
||||||
|
NAME
|
||||||
|
----
|
||||||
|
|
||||||
|
ssh_filter_btrbk.sh - ssh command filter script for btrbk
|
||||||
|
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
[literal]
|
||||||
|
ssh_filter_btrbk.sh [-s|--source] [-t|--target] [-d|--delete] [-i|--info]
|
||||||
|
[-p|--restrict-path <path>] [-l|--log] [--sudo]
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
*ssh_filter_btrbk.sh* restricts SSH commands to 'btrfs' commands used
|
||||||
|
by 'btrbk'. It examines the SSH_ORIGINAL_COMMAND environment variable
|
||||||
|
(set by sshd) and executes it only if it matches commands used by
|
||||||
|
'btrbk'. The accepted commands are specified by the "--source",
|
||||||
|
"--target", "--delete" and "--info" options.
|
||||||
|
|
||||||
|
Note that the following btrfs commands are always allowed: "btrfs
|
||||||
|
subvolume show", "btrfs subvolume list".
|
||||||
|
|
||||||
|
Note that commands for stream compression (pipes through gzip, pigz,
|
||||||
|
bzip2, pbzip2, xz, lzop, lz4), rate limiting (pipes through "pv -L"),
|
||||||
|
and stream buffer (pipes through "mbuffer") are always allowed.
|
||||||
|
|
||||||
|
Example line in /root/.ssh/authorized_keys on a backup target host:
|
||||||
|
|
||||||
|
command="ssh_filter_btrbk.sh --target --delete --restrict-path /mnt/btr_backup" ssh-rsa AAAAB3NzaC1...hwumXFRQBL btrbk@mydomain.com
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
-s, --source::
|
||||||
|
Allow commands for backup source: "btrfs subvolume snapshot",
|
||||||
|
"btrfs send". Equivalent to "--snapshot --send".
|
||||||
|
|
||||||
|
-t, --target::
|
||||||
|
Allow commands for backup target: "btrfs receive", "realpath" and
|
||||||
|
"cat /proc/self/mounts".
|
||||||
|
|
||||||
|
-d, --delete::
|
||||||
|
Allow commands for subvolume deletion: "btrfs subvolume
|
||||||
|
delete". This is used for backup source if
|
||||||
|
'snapshot_preserve_daily' is not set to ``all'', and for backup
|
||||||
|
targets if 'target_preserve_daily' is not set to ``all''.
|
||||||
|
|
||||||
|
-c, --compress::
|
||||||
|
Allow commands for stream compression (pipes through gzip, pigz,
|
||||||
|
bzip2, pbzip2, xz, lzo, lz4). Needed if 'stream_compress' is set.
|
||||||
|
|
||||||
|
-i, --info::
|
||||||
|
Allow informative commands: "btrfs subvolume find-new", "btrfs
|
||||||
|
filesystem usage". This is used by btrbk 'info' and 'diff'
|
||||||
|
commands.
|
||||||
|
|
||||||
|
--snapshot::
|
||||||
|
Allow btrfs snapshot command: "btrfs subvolume snapshot".
|
||||||
|
|
||||||
|
--send::
|
||||||
|
Allow btrfs send command: "btrfs send".
|
||||||
|
|
||||||
|
--receive::
|
||||||
|
Allow btrfs receive command: "btrfs receive".
|
||||||
|
|
||||||
|
-p, --restrict-path <path>::
|
||||||
|
Restrict btrfs commands to <path>.
|
||||||
|
|
||||||
|
-l, --log::
|
||||||
|
Log ACCEPT and REJECT messages to the system log.
|
||||||
|
|
||||||
|
--sudo::
|
||||||
|
Allow btrfs commands to be called via sudo. Enable this if you
|
||||||
|
have "backend btrfs-progs-sudo" in your btrbk configuration file.
|
||||||
|
|
||||||
|
|
||||||
|
AVAILABILITY
|
||||||
|
------------
|
||||||
|
|
||||||
|
Please refer to the btrbk project page *<http://digint.ch/btrbk/>* for
|
||||||
|
further details.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
|
||||||
|
*btrbk*(1),
|
||||||
|
*btrbk.conf*(5),
|
||||||
|
*btrfs*(8)
|
||||||
|
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
------
|
||||||
|
|
||||||
|
Axel Burri <axel@tty0.ch>
|
Loading…
Reference in New Issue