diff --git a/cmd/restic/cmd_prune.go b/cmd/restic/cmd_prune.go index 2d84f2e71..ca08d289b 100644 --- a/cmd/restic/cmd_prune.go +++ b/cmd/restic/cmd_prune.go @@ -262,13 +262,11 @@ func pruneRepository(gopts GlobalOptions, repo restic.Repository) error { var obsoletePacks restic.IDSet if len(rewritePacks) != 0 { - bar = newProgressMax(!gopts.Quiet, uint64(len(rewritePacks)), "packs rewritten") - bar.Start() + bar := newProgressMax(!gopts.Quiet, uint64(len(rewritePacks)), "packs rewritten") obsoletePacks, err = repository.Repack(ctx, repo, rewritePacks, usedBlobs, bar) if err != nil { return err } - bar.Done() } removePacks.Merge(obsoletePacks) @@ -295,6 +293,7 @@ func getUsedBlobs(gopts GlobalOptions, repo restic.Repository, snapshots []*rest bar := newProgressMax(!gopts.Quiet, uint64(len(snapshots)), "snapshots") bar.Start() + defer bar.Done() for _, sn := range snapshots { debug.Log("process snapshot %v", sn.ID()) diff --git a/internal/repository/repack.go b/internal/repository/repack.go index e39480fb1..f241c89ea 100644 --- a/internal/repository/repack.go +++ b/internal/repository/repack.go @@ -17,6 +17,11 @@ import ( // into a new pack. Returned is the list of obsolete packs which can then // be removed. func Repack(ctx context.Context, repo restic.Repository, packs restic.IDSet, keepBlobs restic.BlobSet, p *restic.Progress) (obsoletePacks restic.IDSet, err error) { + if p != nil { + p.Start() + defer p.Done() + } + debug.Log("repacking %d packs while keeping %d blobs", len(packs), len(keepBlobs)) for packID := range packs {