From 577faa757072b747c2b071b8ef99e26e94a1c268 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 10 Apr 2018 21:35:30 +0200 Subject: [PATCH] local/sftp: Handling non-existing dirs in List() --- internal/backend/local/local.go | 9 ++++++++- internal/backend/sftp/sftp.go | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/backend/local/local.go b/internal/backend/local/local.go index d1b7d6788..6792241e1 100644 --- a/internal/backend/local/local.go +++ b/internal/backend/local/local.go @@ -235,7 +235,7 @@ func (b *Local) List(ctx context.Context, t restic.FileType, fn func(restic.File debug.Log("List %v", t) basedir, subdirs := b.Basedir(t) - return fs.Walk(basedir, func(path string, fi os.FileInfo, err error) error { + err := fs.Walk(basedir, func(path string, fi os.FileInfo, err error) error { debug.Log("walk on %v\n", path) if err != nil { return err @@ -271,6 +271,13 @@ func (b *Local) List(ctx context.Context, t restic.FileType, fn func(restic.File return ctx.Err() }) + + if b.IsNotExist(err) { + debug.Log("ignoring non-existing directory") + return nil + } + + return err } // Delete removes the repository and all files. diff --git a/internal/backend/sftp/sftp.go b/internal/backend/sftp/sftp.go index 268a3404a..f01a26dd4 100644 --- a/internal/backend/sftp/sftp.go +++ b/internal/backend/sftp/sftp.go @@ -425,6 +425,10 @@ func (r *SFTP) List(ctx context.Context, t restic.FileType, fn func(restic.FileI walker := r.c.Walk(basedir) for walker.Step() { if walker.Err() != nil { + if r.IsNotExist(walker.Err()) { + debug.Log("ignoring non-existing directory") + return nil + } return walker.Err() }