diff --git a/backend/posix/posix.go b/backend/posix/posix.go index f34446cb..b136a7a0 100644 --- a/backend/posix/posix.go +++ b/backend/posix/posix.go @@ -1271,12 +1271,23 @@ func (p *Posix) createObjVersion(bucket, key string, size int64, acc auth.Accoun } defer f.cleanup() + originalMTime := time.Now() + if srcInfo, err := sf.Stat(); err == nil { + originalMTime = srcInfo.ModTime() + } + // Prioritize copy_file_range for internal file-to-file version copies. _, err = io.Copy(f.File(), sf) if err != nil { return versionPath, err } + // Restore original mtime after copy + err = os.Chtimes(f.File().Name(), time.Now(), originalMTime) + if err != nil { + return versionPath, err + } + versionPath = filepath.Join(versionBucketPath, versioningKey) err = os.MkdirAll(filepath.Join(versionBucketPath, genObjVersionKey(key)), p.newDirPerm)