document backup --group-by
This commit is contained in:
parent
2885db7902
commit
0ce182f044
4 changed files with 30 additions and 3 deletions
14
changelog/unreleased/issue-3941
Normal file
14
changelog/unreleased/issue-3941
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Enhancement: Support `--group-by` for backup parent selection
|
||||||
|
|
||||||
|
The backup command by default selected the parent snapshot based on the hostname
|
||||||
|
and the backup targets. When the backup path list changed, the backup command
|
||||||
|
was unable to determine a suitable parent snapshot and had to read all
|
||||||
|
files again.
|
||||||
|
|
||||||
|
The new `--group-by` option for the backup command allows filtering snapshots
|
||||||
|
for the parent selection by `host`, `paths` and `tags`. It defaults to
|
||||||
|
`host,paths` which selects the latest snapshot with hostname and paths matching
|
||||||
|
those of the backup run. It should be used consistently with `forget --group-by`.
|
||||||
|
|
||||||
|
https://github.com/restic/restic/issues/3941
|
||||||
|
https://github.com/restic/restic/pull/4081
|
|
@ -121,7 +121,7 @@ func init() {
|
||||||
cmdRoot.AddCommand(cmdBackup)
|
cmdRoot.AddCommand(cmdBackup)
|
||||||
|
|
||||||
f := cmdBackup.Flags()
|
f := cmdBackup.Flags()
|
||||||
f.StringVar(&backupOptions.Parent, "parent", "", "use this parent `snapshot` (default: last snapshot in the repository that has the same target files/directories, and is not newer than the snapshot time)")
|
f.StringVar(&backupOptions.Parent, "parent", "", "use this parent `snapshot` (default: latest snapshot in the group determined by --group-by and not newer than the timestamp determined by --time)")
|
||||||
backupOptions.GroupBy = restic.SnapshotGroupByOptions{Host: true, Path: true}
|
backupOptions.GroupBy = restic.SnapshotGroupByOptions{Host: true, Path: true}
|
||||||
f.VarP(&backupOptions.GroupBy, "group-by", "g", "`group` snapshots by host, paths and/or tags, separated by comma (disable grouping with '')")
|
f.VarP(&backupOptions.GroupBy, "group-by", "g", "`group` snapshots by host, paths and/or tags, separated by comma (disable grouping with '')")
|
||||||
f.BoolVarP(&backupOptions.Force, "force", "f", false, `force re-reading the target files/directories (overrides the "parent" flag)`)
|
f.BoolVarP(&backupOptions.Force, "force", "f", false, `force re-reading the target files/directories (overrides the "parent" flag)`)
|
||||||
|
|
|
@ -139,13 +139,24 @@ File change detection
|
||||||
*********************
|
*********************
|
||||||
|
|
||||||
When restic encounters a file that has already been backed up, whether in the
|
When restic encounters a file that has already been backed up, whether in the
|
||||||
current backup or a previous one, it makes sure the file's contents are only
|
current backup or a previous one, it makes sure the file's content is only
|
||||||
stored once in the repository. To do so, it normally has to scan the entire
|
stored once in the repository. To do so, it normally has to scan the entire
|
||||||
contents of every file. Because this can be very expensive, restic also uses a
|
content of the file. Because this can be very expensive, restic also uses a
|
||||||
change detection rule based on file metadata to determine whether a file is
|
change detection rule based on file metadata to determine whether a file is
|
||||||
likely unchanged since a previous backup. If it is, the file is not scanned
|
likely unchanged since a previous backup. If it is, the file is not scanned
|
||||||
again.
|
again.
|
||||||
|
|
||||||
|
The previous backup snapshot, called "parent" snaphot in restic terminology,
|
||||||
|
is determined as follows. By default restic groups snapshots by hostname and
|
||||||
|
backup paths, and then selects the latest snapshot in the group that matches
|
||||||
|
the current backup. You can change the selection criteria using the
|
||||||
|
``--group-by`` option, which defaults to ``host,paths``. To select the latest
|
||||||
|
snapshot with the same paths independent of the hostname, use ``paths``. Or,
|
||||||
|
to only consider the hostname and tags, use ``host,tags``. Alternatively, it
|
||||||
|
is possible to manually specify a specific parent snapshot using the
|
||||||
|
``--parent`` option. Finally, note that one would normally set the
|
||||||
|
``--group-by`` option for the ``forget`` command to the same value.
|
||||||
|
|
||||||
Change detection is only performed for regular files (not special files,
|
Change detection is only performed for regular files (not special files,
|
||||||
symlinks or directories) that have the exact same path as they did in a
|
symlinks or directories) that have the exact same path as they did in a
|
||||||
previous backup of the same location. If a file or one of its containing
|
previous backup of the same location. If a file or one of its containing
|
||||||
|
|
|
@ -219,6 +219,8 @@ paths and tags. The policy is then applied to each group of snapshots individual
|
||||||
This is a safety feature to prevent accidental removal of unrelated backup sets. To
|
This is a safety feature to prevent accidental removal of unrelated backup sets. To
|
||||||
disable grouping and apply the policy to all snapshots regardless of their host,
|
disable grouping and apply the policy to all snapshots regardless of their host,
|
||||||
paths and tags, use ``--group-by ''`` (that is, an empty value to ``--group-by``).
|
paths and tags, use ``--group-by ''`` (that is, an empty value to ``--group-by``).
|
||||||
|
Note that one would normally set the ``--group-by`` option for the ``backup``
|
||||||
|
command to the same value.
|
||||||
|
|
||||||
Additionally, you can restrict the policy to only process snapshots which have a
|
Additionally, you can restrict the policy to only process snapshots which have a
|
||||||
particular hostname with the ``--host`` parameter, or tags with the ``--tag``
|
particular hostname with the ``--host`` parameter, or tags with the ``--tag``
|
||||||
|
|
Loading…
Reference in a new issue