mirror of
https://github.com/restic/restic.git
synced 2025-12-04 00:21:46 +00:00
s3/local backend: Fix error for overwriting files
This commit is contained in:
@@ -171,16 +171,19 @@ func (b *Local) Save(h backend.Handle, p []byte) (err error) {
|
||||
|
||||
f := filename(b.p, h.Type, h.Name)
|
||||
|
||||
// create directories if necessary, ignore errors
|
||||
if h.Type == backend.Data {
|
||||
os.MkdirAll(filepath.Dir(f), backend.Modes.Dir)
|
||||
}
|
||||
|
||||
// test if new path already exists
|
||||
if _, err := os.Stat(f); err == nil {
|
||||
return fmt.Errorf("Rename(): file %v already exists", f)
|
||||
}
|
||||
|
||||
// create directories if necessary, ignore errors
|
||||
if h.Type == backend.Data {
|
||||
err = os.MkdirAll(filepath.Dir(f), backend.Modes.Dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = os.Rename(tmpfile.Name(), f)
|
||||
debug.Log("local.Save", "save %v: rename %v -> %v: %v",
|
||||
h, filepath.Base(tmpfile.Name()), filepath.Base(f), err)
|
||||
|
||||
Reference in New Issue
Block a user