archiver: only store deviceID for hardlinks

The deviceID can change e.g. when backing up from filesystem snapshot.
It is only used for hardlink detection. Thus there it is not necessary
to store it for everything else.
This commit is contained in:
Michael Eischer
2024-03-09 17:38:41 +01:00
parent 63a2350c9e
commit 2ba21fe72b
3 changed files with 8 additions and 1 deletions

View File

@@ -188,6 +188,12 @@ func (arch *Archiver) nodeFromFileInfo(snPath, filename string, fi os.FileInfo)
if !arch.WithAtime {
node.AccessTime = node.ModTime
}
if node.Links == 1 || node.Type == "dir" {
// the DeviceID is only necessary for hardlinked files
// when using subvolumes or snapshots their deviceIDs tend to change which causes
// restic to upload new tree blobs
node.DeviceID = 0
}
// overwrite name to match that within the snapshot
node.Name = path.Base(snPath)
if err != nil {