Cannot upload the same file to two different destinations

What is the problem you are having with rclone?

When uploading a file to two different destinations, rclone will only upload to the first destination but skip the second destination (rclone said "Unchanged skipping").

Run the command 'rclone version' and share the full output of the command.

rclone v1.73.0
- os/version: darwin 26.2 (64 bit)
- os/kernel: 25.2.0 (arm64)
- os/type: darwin
- os/arch: arm64 (ARMv8 compatible)
- go/version: go1.25.6
- go/linking: dynamic
- go/tags: cmount

Which cloud storage system are you using? (eg Google Drive)

AWS S3 and Cloudflare R2.

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone copyto testfile.txt s3:hxbuilds/builds/test/testfile.txt
rclone copyto testfile.txt r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt

The rclone config contents with secrets removed.

[s3]
type = s3
provider = AWS
access_key_id = XXXXXXXX
secret_access_key = XXXXXXXXXXXXX

[r2]
type = s3
provider = Cloudflare
access_key_id = XXXXXXXXXXXXX
secret_access_key = XXXXXXXXXXXXX
endpoint = https://XXXXXXX.r2.cloudflarestorage.com
no_check_bucket = true

A log from the command with the -vv flag

+ rclone copyto testfile.txt s3:hxbuilds/builds/test/testfile.txt
2026/02/07 08:24:02 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 08:24:02 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 08:24:02 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "copyto" "testfile.txt" "s3:hxbuilds/builds/test/testfile.txt"]
2026/02/07 08:24:02 DEBUG : Creating backend with remote "testfile.txt"
2026/02/07 08:24:02 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 08:24:02 DEBUG : fs cache: renaming child cache item "testfile.txt" to be canonical for parent "/Users/andyli/Documents/workspace/haxe"
2026/02/07 08:24:02 DEBUG : Creating backend with remote "s3:hxbuilds/builds/test/"
2026/02/07 08:24:02 DEBUG : fs cache: renaming cache item "s3:hxbuilds/builds/test/" to be canonical "s3:hxbuilds/builds/test"
2026/02/07 08:24:03 DEBUG : testfile.txt: Need to transfer - File not found at Destination
2026/02/07 08:24:03 INFO  : S3 bucket hxbuilds path builds/test: Bucket "hxbuilds" created with ACL ""
2026/02/07 08:24:03 DEBUG : testfile.txt: size = 4 OK
2026/02/07 08:24:03 DEBUG : testfile.txt: md5 = 0cbc6611f5540bd0809a388dc95a615b OK
2026/02/07 08:24:03 INFO  : testfile.txt: Copied (new)
2026/02/07 08:24:03 INFO  : 
Transferred:   	          4 B / 4 B, 100%, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.3s

2026/02/07 08:24:03 DEBUG : 6 go routines active
+ rclone copyto testfile.txt r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
2026/02/07 08:24:03 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 08:24:03 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 08:24:03 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "copyto" "testfile.txt" "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"]
2026/02/07 08:24:03 DEBUG : Creating backend with remote "testfile.txt"
2026/02/07 08:24:03 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 08:24:03 DEBUG : fs cache: renaming child cache item "testfile.txt" to be canonical for parent "/Users/andyli/Documents/workspace/haxe"
2026/02/07 08:24:03 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/"
2026/02/07 08:24:03 DEBUG : fs cache: renaming cache item "r2:hxbuilds-hjtpx7fj/builds/test/" to be canonical "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 08:24:04 DEBUG : testfile.txt: size = 4 OK
2026/02/07 08:24:04 DEBUG : testfile.txt: Size and modification time the same (differ by 0s, within tolerance 1ns)
2026/02/07 08:24:04 DEBUG : testfile.txt: Unchanged skipping
2026/02/07 08:24:04 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         0.0s

2026/02/07 08:24:04 DEBUG : 7 go routines active

Interestingly, the issue is gone if I swap the order, i.e. upload to R2 before S3 as follows

rclone copyto testfile.txt r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
rclone copyto testfile.txt s3:hxbuilds/builds/test/testfile.txt

I would do:

  • rclone ls on the second one for that specific file
  • rclone copyto to the first
  • rclone ls on the second one again for that specifc file (it really can’t be there, can it?)
  • rclone copyto to the second

Share the output.

+ rclone ls r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
2026/02/07 13:46:25 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 13:46:25 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 13:46:25 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "ls" "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"]
2026/02/07 13:46:25 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"
2026/02/07 13:46:25 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 13:46:26 DEBUG : 7 go routines active
+ rclone copyto testfile.txt s3:hxbuilds/builds/test/testfile.txt
2026/02/07 13:46:26 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 13:46:26 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 13:46:26 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "copyto" "testfile.txt" "s3:hxbuilds/builds/test/testfile.txt"]
2026/02/07 13:46:26 DEBUG : Creating backend with remote "testfile.txt"
2026/02/07 13:46:26 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 13:46:26 DEBUG : fs cache: renaming child cache item "testfile.txt" to be canonical for parent "/Users/andyli/Documents/workspace/haxe"
2026/02/07 13:46:26 DEBUG : Creating backend with remote "s3:hxbuilds/builds/test/"
2026/02/07 13:46:26 DEBUG : fs cache: renaming cache item "s3:hxbuilds/builds/test/" to be canonical "s3:hxbuilds/builds/test"
2026/02/07 13:46:26 DEBUG : testfile.txt: Need to transfer - File not found at Destination
2026/02/07 13:46:26 INFO  : S3 bucket hxbuilds path builds/test: Bucket "hxbuilds" created with ACL ""
2026/02/07 13:46:27 DEBUG : testfile.txt: size = 4 OK
2026/02/07 13:46:27 DEBUG : testfile.txt: md5 = 0cbc6611f5540bd0809a388dc95a615b OK
2026/02/07 13:46:27 INFO  : testfile.txt: Copied (new)
2026/02/07 13:46:27 INFO  : 
Transferred:   	          4 B / 4 B, 100%, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.3s

2026/02/07 13:46:27 DEBUG : 6 go routines active
+ rclone ls r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
2026/02/07 13:46:27 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 13:46:27 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 13:46:27 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "ls" "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"]
2026/02/07 13:46:27 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"
2026/02/07 13:46:27 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 13:46:27 DEBUG : fs cache: renaming child cache item "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt" to be canonical for parent "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 13:46:27 DEBUG : 7 go routines active
+ rclone copyto testfile.txt r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
2026/02/07 13:46:27 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 13:46:27 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 13:46:27 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "copyto" "testfile.txt" "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"]
2026/02/07 13:46:27 DEBUG : Creating backend with remote "testfile.txt"
2026/02/07 13:46:27 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 13:46:27 DEBUG : fs cache: renaming child cache item "testfile.txt" to be canonical for parent "/Users/andyli/Documents/workspace/haxe"
2026/02/07 13:46:27 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/"
2026/02/07 13:46:27 DEBUG : fs cache: renaming cache item "r2:hxbuilds-hjtpx7fj/builds/test/" to be canonical "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 13:46:28 DEBUG : testfile.txt: size = 4 OK
2026/02/07 13:46:28 DEBUG : testfile.txt: Size and modification time the same (differ by 0s, within tolerance 1ns)
2026/02/07 13:46:28 DEBUG : testfile.txt: Unchanged skipping
2026/02/07 13:46:28 INFO  : 
Transferred:   	          0 B / 0 B, -, 0 B/s, ETA -
Elapsed time:         0.0s

2026/02/07 13:46:28 DEBUG : 7 go routines active
+ rclone ls r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt
2026/02/07 13:46:28 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 13:46:28 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 13:46:28 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "ls" "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"]
2026/02/07 13:46:28 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt"
2026/02/07 13:46:28 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 13:46:28 DEBUG : fs cache: renaming child cache item "r2:hxbuilds-hjtpx7fj/builds/test/testfile.txt" to be canonical for parent "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 13:46:28 DEBUG : 7 go routines active

Can you:

rclone ls r2:hxbuilds-hjtpx7fj/builds/test/

rclone lsl r2:hxbuilds-hjtpx7fj/builds/test/ --include "testfile.txt*"
+ rclone ls r2:hxbuilds-hjtpx7fj/builds/test/
2026/02/07 15:11:24 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 15:11:24 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 15:11:24 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "ls" "r2:hxbuilds-hjtpx7fj/builds/test/"]
2026/02/07 15:11:24 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/"
2026/02/07 15:11:24 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 15:11:24 DEBUG : fs cache: renaming cache item "r2:hxbuilds-hjtpx7fj/builds/test/" to be canonical "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 15:11:25 DEBUG : 7 go routines active
+ rclone lsl r2:hxbuilds-hjtpx7fj/builds/test/ --include 'testfile.txt*'
2026/02/07 15:11:25 DEBUG : Setting --log-level "DEBUG" from environment variable RCLONE_LOG_LEVEL="DEBUG"
2026/02/07 15:11:25 DEBUG : Setting --config "rclone.conf" from environment variable RCLONE_CONFIG="rclone.conf"
2026/02/07 15:11:25 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "lsl" "r2:hxbuilds-hjtpx7fj/builds/test/" "--include" "testfile.txt*"]
2026/02/07 15:11:25 DEBUG : Creating backend with remote "r2:hxbuilds-hjtpx7fj/builds/test/"
2026/02/07 15:11:25 DEBUG : Using config file from "/Users/andyli/Documents/workspace/haxe/rclone.conf"
2026/02/07 15:11:25 DEBUG : fs cache: renaming cache item "r2:hxbuilds-hjtpx7fj/builds/test/" to be canonical "r2:hxbuilds-hjtpx7fj/builds/test"
2026/02/07 15:11:25 DEBUG : 7 go routines active

Hmm, that is strange.

I was tryign to test out on my own Cloudflare as the storage has a free use tier and I can’t seem to reproduce anything.

felix@neurotic:~/.config/rclone$ rclone delete R2:/test/testfile.txt
felix@neurotic:~/.config/rclone$ rclone lsl R2:/test/testfile.txt
felix@neurotic:~/.config/rclone$ rclone copyto /etc/hosts R2:test/testfile.txt -vv
2026/02/08 08:35:46 DEBUG : rclone: Version "v1.73.0" starting with parameters ["rclone" "copyto" "/etc/hosts" "R2:test/testfile.txt" "-vv"]
2026/02/08 08:35:46 DEBUG : Creating backend with remote "/etc/hosts"
2026/02/08 08:35:46 DEBUG : Using config file from "/home/felix/.config/rclone/rclone.conf"
2026/02/08 08:35:46 DEBUG : fs cache: renaming child cache item "/etc/hosts" to be canonical for parent "/etc"
2026/02/08 08:35:46 DEBUG : Creating backend with remote "R2:test/"
2026/02/08 08:35:46 DEBUG : fs cache: renaming cache item "R2:test/" to be canonical "R2:test"
2026/02/08 08:35:46 DEBUG : hosts: Need to transfer - File not found at Destination
2026/02/08 08:35:46 DEBUG : testfile.txt: size = 413 OK
2026/02/08 08:35:46 DEBUG : hosts: md5 = 4dcd8e1f865d7e88e551a4183baa64f0 OK
2026/02/08 08:35:46 INFO  : hosts: Copied (new) to: testfile.txt
2026/02/08 08:35:46 INFO  :
Transferred:            413 B / 413 B, 100%, 0 B/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.3s

2026/02/08 08:35:46 DEBUG : 6 go routines active
felix@neurotic:~/.config/rclone$ rclone lsl R2:/test/testfile.txt
413 2026-02-08 08:23:42.582874494 testfile.txt

I don’t quite get how a file you can’t see is being marked as there with the upload.

If you check the UI, do you see it?

Can you delete the testfile and validate it’s not in the UI as well and run a copyto test again?

I figured it out finally. The culprit is that I have sippy enabled with the s3 bucket as source and the r2 bucket as destination. Once the file is uploaded to s3, sippy makes it as if the file exists in r2 - at least from the point of view of rclone copyto, somehow.

Not sure whether rclone can/should discover this situation and proceed with the upload.

Oh that makes sense now as I didn’t realize that existed.

I don’t think rclone could really do anything as things happening outside of it, it wouldn’t ever know.

in this example, the file was already there and the same file so everything worked as expected.

Right. Thank you very much for troubleshooting with me!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.