operations: add logs when need to upload files to set mod times #1505

This commit is contained in:
Nick Craig-Wood 2020-09-29 17:03:25 +01:00
parent e7fbdac8e0
commit 2b7994e739

View file

@ -151,6 +151,15 @@ func defaultEqualOpt() equalOpt {
} }
} }
var modTimeUploadOnce sync.Once
// emit a log if we are about to upload a file to set its modification time
func logModTimeUpload(dst fs.Object) {
modTimeUploadOnce.Do(func() {
fs.Logf(dst.Fs(), "Forced to upload files to set modification times on this backend.")
})
}
func equal(ctx context.Context, src fs.ObjectInfo, dst fs.Object, opt equalOpt) bool { func equal(ctx context.Context, src fs.ObjectInfo, dst fs.Object, opt equalOpt) bool {
if sizeDiffers(src, dst) { if sizeDiffers(src, dst) {
fs.Debugf(src, "Sizes differ (src %d vs dst %d)", src.Size(), dst.Size()) fs.Debugf(src, "Sizes differ (src %d vs dst %d)", src.Size(), dst.Size())
@ -223,10 +232,12 @@ func equal(ctx context.Context, src fs.ObjectInfo, dst fs.Object, opt equalOpt)
// Update the mtime of the dst object here // Update the mtime of the dst object here
err := dst.SetModTime(ctx, srcModTime) err := dst.SetModTime(ctx, srcModTime)
if err == fs.ErrorCantSetModTime { if err == fs.ErrorCantSetModTime {
fs.Debugf(dst, "src and dst identical but can't set mod time without re-uploading") logModTimeUpload(dst)
fs.Infof(dst, "src and dst identical but can't set mod time without re-uploading")
return false return false
} else if err == fs.ErrorCantSetModTimeWithoutDelete { } else if err == fs.ErrorCantSetModTimeWithoutDelete {
fs.Debugf(dst, "src and dst identical but can't set mod time without deleting and re-uploading") logModTimeUpload(dst)
fs.Infof(dst, "src and dst identical but can't set mod time without deleting and re-uploading")
// Remove the file if BackupDir isn't set. If BackupDir is set we would rather have the old file // Remove the file if BackupDir isn't set. If BackupDir is set we would rather have the old file
// put in the BackupDir than deleted which is what will happen if we don't delete it. // put in the BackupDir than deleted which is what will happen if we don't delete it.
if fs.Config.BackupDir == "" { if fs.Config.BackupDir == "" {