From 57f5ad188ba75ec994558a8158d53d13762c262c Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 8 Jun 2024 11:55:48 +0100 Subject: [PATCH] operations: fix incorrect modtime on some multipart transfers In this commit 6a0a54ab97a5aaba operations: fix missing metadata for multipart transfers to local disk We broke the setting of modification times when doing multipart transfers from a backend which didn't support metadata to a backend which did support metadata. This was fixed by setting the "mtime" in the metadata if it was missing. --- fs/operations/multithread.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/operations/multithread.go b/fs/operations/multithread.go index 24725b355..582df8445 100644 --- a/fs/operations/multithread.go +++ b/fs/operations/multithread.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "io" + "time" "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/accounting" @@ -253,6 +254,9 @@ func multiThreadCopy(ctx context.Context, f fs.Fs, remote string, src fs.Object, if err != nil { return nil, fmt.Errorf("multi-thread copy: failed to read metadata from source object: %w", err) } + if _, foundMeta := meta["mtime"]; !foundMeta { + meta.Set("mtime", src.ModTime(ctx).Format(time.RFC3339Nano)) + } err = do.SetMetadata(ctx, meta) if err != nil { return nil, fmt.Errorf("multi-thread copy: failed to set metadata: %w", err)