Merge pull request #673 from Novex/restore-directory-metadata-for-existing-directories
Don't consider a pre-existing directory in the restore path to be a failure
This commit is contained in:
commit
11f23ae663
2 changed files with 26 additions and 1 deletions
|
@ -184,7 +184,7 @@ func (node Node) RestoreTimestamps(path string) error {
|
||||||
|
|
||||||
func (node Node) createDirAt(path string) error {
|
func (node Node) createDirAt(path string) error {
|
||||||
err := fs.Mkdir(path, node.Mode)
|
err := fs.Mkdir(path, node.Mode)
|
||||||
if err != nil {
|
if err != nil && !os.IsExist(err) {
|
||||||
return errors.Wrap(err, "Mkdir")
|
return errors.Wrap(err, "Mkdir")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,31 @@ var nodeTests = []restic.Node{
|
||||||
AccessTime: parseTime("2015-05-14 21:07:24.222"),
|
AccessTime: parseTime("2015-05-14 21:07:24.222"),
|
||||||
ChangeTime: parseTime("2015-05-14 21:07:25.333"),
|
ChangeTime: parseTime("2015-05-14 21:07:25.333"),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// include "testFile" and "testDir" again with slightly different
|
||||||
|
// metadata, so we can test if CreateAt works with pre-existing files.
|
||||||
|
restic.Node{
|
||||||
|
Name: "testFile",
|
||||||
|
Type: "file",
|
||||||
|
Content: restic.IDs{},
|
||||||
|
UID: uint32(os.Getuid()),
|
||||||
|
GID: uint32(os.Getgid()),
|
||||||
|
Mode: 0604,
|
||||||
|
ModTime: parseTime("2005-05-14 21:07:03.111"),
|
||||||
|
AccessTime: parseTime("2005-05-14 21:07:04.222"),
|
||||||
|
ChangeTime: parseTime("2005-05-14 21:07:05.333"),
|
||||||
|
},
|
||||||
|
restic.Node{
|
||||||
|
Name: "testDir",
|
||||||
|
Type: "dir",
|
||||||
|
Subtree: nil,
|
||||||
|
UID: uint32(os.Getuid()),
|
||||||
|
GID: uint32(os.Getgid()),
|
||||||
|
Mode: 0750 | os.ModeDir,
|
||||||
|
ModTime: parseTime("2005-05-14 21:07:03.111"),
|
||||||
|
AccessTime: parseTime("2005-05-14 21:07:04.222"),
|
||||||
|
ChangeTime: parseTime("2005-05-14 21:07:05.333"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNodeRestoreAt(t *testing.T) {
|
func TestNodeRestoreAt(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue