Merge pull request #3931 from kjetilho/feature/optional_scanner
add --no-scan to backup command
This commit is contained in:
commit
2723159ed4
3 changed files with 30 additions and 9 deletions
8
changelog/unreleased/pull-3931
Normal file
8
changelog/unreleased/pull-3931
Normal file
|
@ -0,0 +1,8 @@
|
|||
Enhancement: Allow backup file tree scanner to be disabled
|
||||
|
||||
Restic walks the file tree in a separate scanner process to find the total size
|
||||
and file/directory count, and uses that to provide an ETA. This can slow down
|
||||
backups, especially of network filesystems. The new flag `--no-scan`
|
||||
can be used to speed up such backups.
|
||||
|
||||
https://github.com/restic/restic/pull/3931
|
|
@ -99,6 +99,7 @@ type BackupOptions struct {
|
|||
UseFsSnapshot bool
|
||||
DryRun bool
|
||||
ReadConcurrency uint
|
||||
NoScan bool
|
||||
}
|
||||
|
||||
var backupOptions BackupOptions
|
||||
|
@ -138,6 +139,7 @@ func init() {
|
|||
f.BoolVar(&backupOptions.IgnoreInode, "ignore-inode", false, "ignore inode number changes when checking for modified files")
|
||||
f.BoolVar(&backupOptions.IgnoreCtime, "ignore-ctime", false, "ignore ctime changes when checking for modified files")
|
||||
f.BoolVarP(&backupOptions.DryRun, "dry-run", "n", false, "do not upload or write any data, just show what would be done")
|
||||
f.BoolVar(&backupOptions.NoScan, "no-scan", false, "do not run scanner to estimate size of backup")
|
||||
if runtime.GOOS == "windows" {
|
||||
f.BoolVar(&backupOptions.UseFsSnapshot, "use-fs-snapshot", false, "use filesystem snapshot where possible (currently only Windows VSS)")
|
||||
}
|
||||
|
@ -586,16 +588,18 @@ func runBackup(ctx context.Context, opts BackupOptions, gopts GlobalOptions, ter
|
|||
targets = []string{filename}
|
||||
}
|
||||
|
||||
sc := archiver.NewScanner(targetFS)
|
||||
sc.SelectByName = selectByNameFilter
|
||||
sc.Select = selectFilter
|
||||
sc.Error = progressPrinter.ScannerError
|
||||
sc.Result = progressReporter.ReportTotal
|
||||
if !opts.NoScan {
|
||||
sc := archiver.NewScanner(targetFS)
|
||||
sc.SelectByName = selectByNameFilter
|
||||
sc.Select = selectFilter
|
||||
sc.Error = progressPrinter.ScannerError
|
||||
sc.Result = progressReporter.ReportTotal
|
||||
|
||||
if !gopts.JSON {
|
||||
progressPrinter.V("start scan on %v", targets)
|
||||
if !gopts.JSON {
|
||||
progressPrinter.V("start scan on %v", targets)
|
||||
}
|
||||
wg.Go(func() error { return sc.Scan(cancelCtx, targets) })
|
||||
}
|
||||
wg.Go(func() error { return sc.Scan(cancelCtx, targets) })
|
||||
|
||||
arch := archiver.New(repo, targetFS, archiver.Options{ReadConcurrency: backupOptions.ReadConcurrency})
|
||||
arch.SelectByName = selectByNameFilter
|
||||
|
|
|
@ -204,8 +204,17 @@ Combined with ``--verbose``, you can see a list of changes:
|
|||
modified /archive.tar.gz, saved in 0.140s (25.542 MiB added)
|
||||
Would be added to the repository: 25.551 MiB
|
||||
|
||||
.. _backup-excluding-files:
|
||||
Disabling Backup Progress Estimation
|
||||
************************************
|
||||
|
||||
When you start a backup, restic will concurrently count the number of
|
||||
files and their total size, which is used to estimate how long it will
|
||||
take. This will cause some extra I/O, which can slow down backup of
|
||||
network file systems or fuse mounts.
|
||||
|
||||
- ``--no-scan`` Do not run scanner to estimate size of backup
|
||||
|
||||
.. _backup-excluding-files:
|
||||
Excluding Files
|
||||
***************
|
||||
|
||||
|
|
Loading…
Reference in a new issue