local: fix sizes and syncing with --links option on Windows - fixes #4581
Before this change rclone returned the size from the Stat call of the link. On Windows this reads as 0 always, however on unix it reads as the length of the text in the link. This caused errors like this when syncing: Failed to copy: corrupted on transfer: sizes differ 0 vs 13 This change causes Windows platforms to read the link and use that as the size of the link instead of 0 which fixes the problem.
This commit is contained in:
parent
72083c65ad
commit
7428e47ebc
2 changed files with 10 additions and 10 deletions
|
@ -1231,6 +1231,15 @@ func (o *Object) setMetadata(info os.FileInfo) {
|
|||
o.modTime = info.ModTime()
|
||||
o.mode = info.Mode()
|
||||
o.fs.objectMetaMu.Unlock()
|
||||
// On Windows links read as 0 size so set the correct size here
|
||||
if runtime.GOOS == "windows" && o.translatedLink {
|
||||
linkdst, err := os.Readlink(o.path)
|
||||
if err != nil {
|
||||
fs.Errorf(o, "Failed to read link size: %v", err)
|
||||
} else {
|
||||
o.size = int64(len(linkdst))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Stat an Object into info
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue