2
2
mirror of https://github.com/octoleo/restic.git synced 2024-06-03 09:30:50 +00:00

Skip archiver.Scan before backup when --quiet is set

This commit is contained in:
Bowen Song 2018-03-20 19:54:29 +00:00
parent 4a524da736
commit 34671d7c9b
4 changed files with 49 additions and 4 deletions

View File

@ -0,0 +1,5 @@
Enhancement: Improve backup speed by skipping the initial scan when the quiet flag is set
We've improved the backup speed when the quiet flag -q or --quiet is set by skipping the initial scan which gathers information for displaying the progress bar and the ETA estimation.
https://github.com/restic/restic/issues/1160

View File

@ -451,9 +451,12 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error {
return true return true
} }
stat, err := archiver.Scan(target, selectFilter, newScanProgress(gopts)) var stat restic.Stat
if err != nil { if !gopts.Quiet {
return err stat, err = archiver.Scan(target, selectFilter, newScanProgress(gopts))
if err != nil {
return err
}
} }
arch := archiver.New(repo) arch := archiver.New(repo)

View File

@ -1312,3 +1312,38 @@ func linkEqual(source, dest []string) bool {
return true return true
} }
func TestQuietBackup(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()
datafile := filepath.Join("testdata", "backup-data.tar.gz")
fd, err := os.Open(datafile)
if os.IsNotExist(errors.Cause(err)) {
t.Skipf("unable to find data file %q, skipping", datafile)
return
}
rtest.OK(t, err)
rtest.OK(t, fd.Close())
testRunInit(t, env.gopts)
rtest.SetupTarTestFixture(t, env.testdata, datafile)
opts := BackupOptions{}
env.gopts.Quiet = false
testRunBackup(t, []string{env.testdata}, opts, env.gopts)
snapshotIDs := testRunList(t, "snapshots", env.gopts)
rtest.Assert(t, len(snapshotIDs) == 1,
"expected one snapshot, got %v", snapshotIDs)
testRunCheck(t, env.gopts)
env.gopts.Quiet = true
testRunBackup(t, []string{env.testdata}, opts, env.gopts)
snapshotIDs = testRunList(t, "snapshots", env.gopts)
rtest.Assert(t, len(snapshotIDs) == 2,
"expected two snapshots, got %v", snapshotIDs)
testRunCheck(t, env.gopts)
}

View File

@ -107,7 +107,9 @@ Subcommand that support showing progress information such as ``backup``,
``check`` and ``prune`` will do so unless the quiet flag ``-q`` or ``check`` and ``prune`` will do so unless the quiet flag ``-q`` or
``--quiet`` is set. When running from a non-interactive console progress ``--quiet`` is set. When running from a non-interactive console progress
reporting will be limited to once every 10 seconds to not fill your reporting will be limited to once every 10 seconds to not fill your
logs. logs. Use ``backup`` with the quiet flag ``-q`` or ``--quiet`` can skip
the initial scan of the source directory, this may shorten the backup
time needed for large directories.
Additionally on Unix systems if ``restic`` receives a SIGUSR1 signal the Additionally on Unix systems if ``restic`` receives a SIGUSR1 signal the
current progress will written to the standard output so you can check up current progress will written to the standard output so you can check up