2
2
mirror of https://github.com/octoleo/restic.git synced 2024-11-25 22:27:35 +00:00

Make realistic forget --prune --dryrun

This commit is contained in:
Alexander Weiss 2020-07-19 07:13:41 +02:00 committed by Alexander Neumann
parent 7f9a0a5907
commit b2f5381737
4 changed files with 10 additions and 7 deletions

View File

@ -214,9 +214,8 @@ func runForget(opts ForgetOptions, gopts GlobalOptions, args []string) error {
if !gopts.JSON { if !gopts.JSON {
Verbosef("%d snapshots have been removed, running prune\n", len(removeSnIDs)) Verbosef("%d snapshots have been removed, running prune\n", len(removeSnIDs))
} }
pruneOptions.DryRun = opts.DryRun pruneOptions.DryRun = opts.DryRun
return runPruneWithRepo(pruneOptions, gopts, repo) return runPruneWithRepo(pruneOptions, gopts, repo, removeSnIDs)
} }
return nil return nil

View File

@ -128,15 +128,15 @@ func runPrune(opts PruneOptions, gopts GlobalOptions) error {
return err return err
} }
return runPruneWithRepo(opts, gopts, repo) return runPruneWithRepo(opts, gopts, repo, restic.NewIDSet())
} }
func runPruneWithRepo(opts PruneOptions, gopts GlobalOptions, repo *repository.Repository) error { func runPruneWithRepo(opts PruneOptions, gopts GlobalOptions, repo *repository.Repository, ignoreSnapshots restic.IDSet) error {
// we do not need index updates while pruning! // we do not need index updates while pruning!
repo.DisableAutoIndexUpdate() repo.DisableAutoIndexUpdate()
Verbosef("loading all snapshots...\n") Verbosef("loading all snapshots...\n")
snapshots, err := restic.LoadAllSnapshots(gopts.ctx, repo) snapshots, err := restic.LoadAllSnapshots(gopts.ctx, repo, ignoreSnapshots)
if err != nil { if err != nil {
return err return err
} }

View File

@ -67,8 +67,12 @@ func LoadSnapshot(ctx context.Context, repo Repository, id ID) (*Snapshot, error
} }
// LoadAllSnapshots returns a list of all snapshots in the repo. // LoadAllSnapshots returns a list of all snapshots in the repo.
func LoadAllSnapshots(ctx context.Context, repo Repository) (snapshots []*Snapshot, err error) { // If a snapshot ID is in excludeIDs, it will not be included in the result.
func LoadAllSnapshots(ctx context.Context, repo Repository, excludeIDs IDSet) (snapshots []*Snapshot, err error) {
err = repo.List(ctx, SnapshotFile, func(id ID, size int64) error { err = repo.List(ctx, SnapshotFile, func(id ID, size int64) error {
if excludeIDs.Has(id) {
return nil
}
sn, err := LoadSnapshot(ctx, repo, id) sn, err := LoadSnapshot(ctx, repo, id)
if err != nil { if err != nil {
return err return err

View File

@ -25,7 +25,7 @@ func TestCreateSnapshot(t *testing.T) {
restic.TestCreateSnapshot(t, repo, testSnapshotTime.Add(time.Duration(i)*time.Second), testDepth, 0) restic.TestCreateSnapshot(t, repo, testSnapshotTime.Add(time.Duration(i)*time.Second), testDepth, 0)
} }
snapshots, err := restic.LoadAllSnapshots(context.TODO(), repo) snapshots, err := restic.LoadAllSnapshots(context.TODO(), repo, restic.NewIDSet())
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }