forked from TrueCloudLab/restic
Loop over index files for 'list blobs'
=> reduces memory consumption a lot!
This commit is contained in:
parent
285b5236c2
commit
b5543cff5d
2 changed files with 16 additions and 10 deletions
6
changelog/unreleased/pull-2786
Normal file
6
changelog/unreleased/pull-2786
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
Enhancement: Optimize `list blobs` command
|
||||||
|
|
||||||
|
We've changed the implementation of `list blobs` which should be now a bit faster
|
||||||
|
and consume almost no memory even for large repositories.
|
||||||
|
|
||||||
|
https://github.com/restic/restic/pull/2786
|
|
@ -2,7 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/restic/restic/internal/errors"
|
"github.com/restic/restic/internal/errors"
|
||||||
"github.com/restic/restic/internal/index"
|
"github.com/restic/restic/internal/repository"
|
||||||
"github.com/restic/restic/internal/restic"
|
"github.com/restic/restic/internal/restic"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
@ -60,16 +60,16 @@ func runList(cmd *cobra.Command, opts GlobalOptions, args []string) error {
|
||||||
case "locks":
|
case "locks":
|
||||||
t = restic.LockFile
|
t = restic.LockFile
|
||||||
case "blobs":
|
case "blobs":
|
||||||
idx, err := index.Load(opts.ctx, repo, nil)
|
return repo.List(opts.ctx, restic.IndexFile, func(id restic.ID, size int64) error {
|
||||||
|
idx, err := repository.LoadIndex(opts.ctx, repo, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
for blobs := range idx.Each(opts.ctx) {
|
||||||
for _, pack := range idx.Packs {
|
Printf("%v %v\n", blobs.Type, blobs.ID)
|
||||||
for _, entry := range pack.Entries {
|
|
||||||
Printf("%v %v\n", entry.Type, entry.ID)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue