1
0
Fork 0
mirror of https://github.com/restic/restic.git synced 2024-12-25 17:27:25 +00:00

Merge pull request #877 from middelink/fix-875

Fix crash at restoring pre-existing hardlinked files
This commit is contained in:
Alexander Neumann 2017-03-11 10:13:43 +01:00
commit 887e81188f

View file

@ -227,6 +227,9 @@ func (node Node) createDirAt(path string) error {
func (node Node) createFileAt(path string, repo Repository, idx *HardlinkIndex) error { func (node Node) createFileAt(path string, repo Repository, idx *HardlinkIndex) error {
if node.Links > 1 && idx.Has(node.Inode, node.Device) { if node.Links > 1 && idx.Has(node.Inode, node.Device) {
if err := fs.Remove(path); !os.IsNotExist(err) {
return errors.Wrap(err, "RemoveCreateHardlink")
}
err := fs.Link(idx.GetFilename(node.Inode, node.Device), path) err := fs.Link(idx.GetFilename(node.Inode, node.Device), path)
if err != nil { if err != nil {
return errors.Wrap(err, "CreateHardlink") return errors.Wrap(err, "CreateHardlink")
@ -265,7 +268,9 @@ func (node Node) createFileAt(path string, repo Repository, idx *HardlinkIndex)
} }
} }
idx.Add(node.Inode, node.Device, path) if node.Links > 1 {
idx.Add(node.Inode, node.Device, path)
}
return nil return nil
} }