aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sync.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/sync.go b/sync.go
index 78f3fa8..a22e628 100644
--- a/sync.go
+++ b/sync.go
@@ -141,6 +141,15 @@ func copyFile(src, dst string, mode os.FileMode) error {
}
defer dstFile.Close()
- _, err = io.Copy(dstFile, srcFile)
- return err
+ if _, err = io.Copy(dstFile, srcFile); err != nil {
+ return err
+ }
+
+ // Preserve modtime so next sync comparison matches
+ srcInfo, err := os.Lstat(src)
+ if err != nil {
+ return nil // content copied, modtime is non-fatal
+ }
+ os.Chtimes(dst, srcInfo.ModTime(), srcInfo.ModTime())
+ return nil
}