Merge pull request #2786 from aawsome/memory-list-blobs

Loop over index files for 'list blobs'
This commit is contained in:
MichaelEischer 2020-06-15 22:27:29 +02:00 committed by GitHub
commit aba270df7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 10 deletions

View 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

View file

@ -2,7 +2,7 @@ package main
import (
"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/spf13/cobra"
@ -60,16 +60,16 @@ func runList(cmd *cobra.Command, opts GlobalOptions, args []string) error {
case "locks":
t = restic.LockFile
case "blobs":
idx, err := index.Load(opts.ctx, repo, nil)
if err != nil {
return err
}
for _, pack := range idx.Packs {
for _, entry := range pack.Entries {
Printf("%v %v\n", entry.Type, entry.ID)
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 {
return err
}
}
for blobs := range idx.Each(opts.ctx) {
Printf("%v %v\n", blobs.Type, blobs.ID)
}
return nil
})
return nil
default: