forked from TrueCloudLab/restic
Azure: Fix List(), use pagination marker
This commit is contained in:
parent
f61dab1774
commit
dd49e2b12d
1 changed files with 28 additions and 14 deletions
|
@ -264,25 +264,39 @@ func (be *Backend) List(ctx context.Context, t restic.FileType) <-chan string {
|
||||||
prefix += "/"
|
prefix += "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
params := storage.ListBlobsParameters{
|
||||||
|
MaxResults: 1000,
|
||||||
|
Prefix: prefix,
|
||||||
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(ch)
|
defer close(ch)
|
||||||
|
|
||||||
obj, err := be.container.ListBlobs(storage.ListBlobsParameters{Prefix: prefix})
|
for {
|
||||||
if err != nil {
|
obj, err := be.container.ListBlobs(params)
|
||||||
return
|
if err != nil {
|
||||||
}
|
|
||||||
|
|
||||||
for _, item := range obj.Blobs {
|
|
||||||
m := strings.TrimPrefix(item.Name, prefix)
|
|
||||||
if m == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case ch <- path.Base(m):
|
|
||||||
case <-ctx.Done():
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug.Log("got %v objects", len(obj.Blobs))
|
||||||
|
|
||||||
|
for _, item := range obj.Blobs {
|
||||||
|
m := strings.TrimPrefix(item.Name, prefix)
|
||||||
|
if m == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case ch <- path.Base(m):
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if obj.NextMarker == "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
params.Marker = obj.NextMarker
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue