What is the problem you are having with rclone?
Quick summary:
When using bisync with --conflict-resolve newer and --conflict-loser pathname and the files in both source and destination site are changed, rclone does not copy the winner file to the loser site.
Steps to replicate the problem:
- Set up the local site
rclone config create remote local - Create folders
mkdir -p /content/src /content/dst - Create
file.txtin/content/src
echo "hello" > ./src/file.txt
- Resync
rclone bisync /content/src remote:/content/dst --resync - Change
/content/src/file.txtand then change/content/dst/file.txt
echo "src updated" > /content/src/file.txt
echo "dst updated" > /content/dst/file.txt
- Bisync
rclone bisync /content/src remote:/content/dst --conflict-resolve newer --conflict-loser pathname --force
Expected behavior:
Both site should have file.txt and file.txt.conflict1
Actual behavior:
Could not find /content/src/file.txt. Found only /content/src/file.txt.conflict1
Google Colab notebook for reproducing the problem:
https://colab.research.google.com/drive/1sd2fI-x3TkoBlHswsK3V1ptr84Zpf5CO?usp=sharing
Notes:
- Tested on both Windows and Linux
- Only happened with
--conflict-resolve newer --conflict-loser pathname. The problem solved when using--conflict-resolve newer --conflict-loser num
Run the command 'rclone version' and share the full output of the command.
rclone v1.74.0
- os/version: ubuntu 22.04 (64 bit)
- os/kernel: 6.6.113+ (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.26.2
- go/linking: static
- go/tags: none
Which cloud storage system are you using? (eg Google Drive)
local
The command you were trying to run (eg rclone copy /tmp remote:tmp)
!rclone bisync /content/src remote:/content/dst --conflict-resolve newer --conflict-loser pathname
The rclone config contents with secrets removed.
[remote]
type = local
A log from the command with the -vv flag
2026/05/08 15:09:29 DEBUG : rclone: Version "v1.74.0" starting with parameters ["rclone" "bisync" "/content/src" "remote:/content/dst" "--conflict-resolve" "newer" "--conflict-loser" "pathname" "--force" "-vv"]
2026/05/08 15:09:29 DEBUG : Creating backend with remote "/content/src"
2026/05/08 15:09:29 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2026/05/08 15:09:29 DEBUG : Creating backend with remote "remote:/content/dst"
2026/05/08 15:09:29 INFO : Setting --ignore-listing-checksum as neither --checksum nor --compare checksum are set.
2026/05/08 15:09:29 INFO : Bisyncing with Comparison Settings:
{
"Modtime": true,
"Size": true,
"Checksum": false,
"HashType1": 0,
"HashType2": 0,
"NoSlowHash": false,
"SlowHashSyncOnly": false,
"SlowHashDetected": true,
"DownloadHash": false
}
2026/05/08 15:09:29 DEBUG : Lock file created: /root/.cache/rclone/bisync/content_src..remote__content_dst.lck
2026/05/08 15:09:29 INFO : Synching Path1 "/content/src/" with Path2 "remote:/content/dst/"
2026/05/08 15:09:29 DEBUG : updated backup-dir for Path1
2026/05/08 15:09:29 DEBUG : updated backup-dir for Path2
2026/05/08 15:09:29 INFO : Building Path1 and Path2 listings
2026/05/08 15:09:29 DEBUG : &{fs1:0x1101a6766c0 fs2:0x1101a676840 abort:false critical:false retryable:false basePath:/root/.cache/rclone/bisync/content_src..remote__content_dst workDir:/root/.cache/rclone/bisync listing1:/root/.cache/rclone/bisync/content_src..remote__content_dst.path1.lst listing2:/root/.cache/rclone/bisync/content_src..remote__content_dst.path2.lst newListing1:/root/.cache/rclone/bisync/content_src..remote__content_dst.path1.lst-new newListing2:/root/.cache/rclone/bisync/content_src..remote__content_dst.path2.lst-new aliases:map[] opt:0x1101a1f6240 octx:{emptyCtx:{}} fctx:{emptyCtx:{}} InGracefulShutdown:false CleanupCompleted:false SyncCI:<nil> CancelSync:<nil> DebugName: lockFile:/root/.cache/rclone/bisync/content_src..remote__content_dst.lck renames:map[] resyncIs1to2:false march:{ls1:0x1101a8f2180 ls2:0x1101a8f21e0 err:<nil> firstErr:<nil> marchAliasLock:{_:{} mu:{state:0 sema:0}} marchLsLock:{_:{} mu:{state:0 sema:0}} marchErrLock:{_:{} mu:{state:0 sema:0}} marchCtx:{emptyCtx:{}}} check:{hashType:0 fsrc:<nil> fdst:<nil> fcrypt:<nil>} queueOpt:{logger:{LoggerFn:<nil> Combined:0x1101a8d2d20 MissingOnSrc:0x1101a8d2d50 MissingOnDst:0x1101a8d2d80 Match:0x1101a8d2db0 Differ:0x1101a8d2de0 Error:0x1101a8d2e10 DestAfter:0x1101a8d2e40 JSON:0x1101a8d2e70 DeleteModeOff:false ListFormat:{separator: dirSlash:false absolute:false output:[] csv:<nil> buf:{buf:[] off:0 lastRead:0}} JSONOpt:{Recurse:false NoModTime:false NoMimeType:false ShowEncrypted:false ShowOrigIDs:false ShowHash:false DirsOnly:false FilesOnly:false Metadata:false HashTypes:[]} LJ:<nil> Format: TimeFormat: Separator: DirSlash:false HashType:0 FilesOnly:false DirsOnly:false Csv:false Absolute:false} lock:{_:{} mu:{state:0 sema:0}} once:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}} ignoreListingChecksum:false ignoreListingModtime:false hashTypes:map[] queueCI:<nil>} downloadHashOpt:{downloadHash:false downloadHashWarn:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}} firstDownloadHash:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}}} lockFileOpt:{stopRenewal:0x2326380 data:{Session:/root/.cache/rclone/bisync/content_src..remote__content_dst PID:14255 TimeRenewed:{wall:14012841433683904771 ext:105897278 loc:0x4f18180} TimeExpires:{wall:748341651 ext:70221049769 loc:0x4f18180}}}}: starting to march!
2026/05/08 15:09:29 DEBUG : file.txt: both path1 and path2
2026/05/08 15:09:29 DEBUG : file.txt: is Object
2026/05/08 15:09:29 DEBUG : &{fs1:0x1101a6766c0 fs2:0x1101a676840 abort:false critical:false retryable:false basePath:/root/.cache/rclone/bisync/content_src..remote__content_dst workDir:/root/.cache/rclone/bisync listing1:/root/.cache/rclone/bisync/content_src..remote__content_dst.path1.lst listing2:/root/.cache/rclone/bisync/content_src..remote__content_dst.path2.lst newListing1:/root/.cache/rclone/bisync/content_src..remote__content_dst.path1.lst-new newListing2:/root/.cache/rclone/bisync/content_src..remote__content_dst.path2.lst-new aliases:map[] opt:0x1101a1f6240 octx:{emptyCtx:{}} fctx:{emptyCtx:{}} InGracefulShutdown:false CleanupCompleted:false SyncCI:<nil> CancelSync:<nil> DebugName: lockFile:/root/.cache/rclone/bisync/content_src..remote__content_dst.lck renames:map[] resyncIs1to2:false march:{ls1:0x1101a8f2180 ls2:0x1101a8f21e0 err:<nil> firstErr:<nil> marchAliasLock:{_:{} mu:{state:0 sema:0}} marchLsLock:{_:{} mu:{state:0 sema:0}} marchErrLock:{_:{} mu:{state:0 sema:0}} marchCtx:{emptyCtx:{}}} check:{hashType:0 fsrc:<nil> fdst:<nil> fcrypt:<nil>} queueOpt:{logger:{LoggerFn:<nil> Combined:0x1101a8d2d20 MissingOnSrc:0x1101a8d2d50 MissingOnDst:0x1101a8d2d80 Match:0x1101a8d2db0 Differ:0x1101a8d2de0 Error:0x1101a8d2e10 DestAfter:0x1101a8d2e40 JSON:0x1101a8d2e70 DeleteModeOff:false ListFormat:{separator: dirSlash:false absolute:false output:[] csv:<nil> buf:{buf:[] off:0 lastRead:0}} JSONOpt:{Recurse:false NoModTime:false NoMimeType:false ShowEncrypted:false ShowOrigIDs:false ShowHash:false DirsOnly:false FilesOnly:false Metadata:false HashTypes:[]} LJ:<nil> Format: TimeFormat: Separator: DirSlash:false HashType:0 FilesOnly:false DirsOnly:false Csv:false Absolute:false} lock:{_:{} mu:{state:0 sema:0}} once:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}} ignoreListingChecksum:false ignoreListingModtime:false hashTypes:map[] queueCI:<nil>} downloadHashOpt:{downloadHash:false downloadHashWarn:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}} firstDownloadHash:{_:{} done:{_:{} v:0} m:{_:{} mu:{state:0 sema:0}}}} lockFileOpt:{stopRenewal:0x2326380 data:{Session:/root/.cache/rclone/bisync/content_src..remote__content_dst PID:14255 TimeRenewed:{wall:14012841433683904771 ext:105897278 loc:0x4f18180} TimeExpires:{wall:748341651 ext:70221049769 loc:0x4f18180}}}}: march completed. err: <nil>
2026/05/08 15:09:29 INFO : Path1 checking for diffs
2026/05/08 15:09:29 DEBUG : file.txt: (old: 6 current: 12)
2026/05/08 15:09:29 DEBUG : 2026-05-08 15:09:28.210054609 +0000 UTC: Modification times differ by 1.212010923s: 2026-05-08 15:09:28.210054609 +0000 UTC, 2026-05-08 15:09:29.422065532 +0000 UTC
2026/05/08 15:09:29 DEBUG : file.txt: (old: 2026-05-08 15:09:28.210054609 +0000 UTC current: 2026-05-08 15:09:29.422065532 +0000 UTC)
2026/05/08 15:09:29 INFO : - Path1 File changed: size (larger), time (newer) - file.txt
2026/05/08 15:09:29 INFO : Path1: 1 changes: 0 new, 1 modified, 0 deleted
2026/05/08 15:09:29 INFO : (Modified: 1 newer, 0 older, 1 larger, 0 smaller)
2026/05/08 15:09:29 INFO : Path2 checking for diffs
2026/05/08 15:09:29 DEBUG : file.txt: (old: 6 current: 12)
2026/05/08 15:09:29 DEBUG : 2026-05-08 15:09:28.210054609 +0000 UTC: Modification times differ by 1.319011887s: 2026-05-08 15:09:28.210054609 +0000 UTC, 2026-05-08 15:09:29.529066496 +0000 UTC
2026/05/08 15:09:29 DEBUG : file.txt: (old: 2026-05-08 15:09:28.210054609 +0000 UTC current: 2026-05-08 15:09:29.529066496 +0000 UTC)
2026/05/08 15:09:29 INFO : - Path2 File changed: size (larger), time (newer) - file.txt
2026/05/08 15:09:29 INFO : Path2: 1 changes: 0 new, 1 modified, 0 deleted
2026/05/08 15:09:29 INFO : (Modified: 1 newer, 0 older, 1 larger, 0 smaller)
2026/05/08 15:09:29 INFO : Applying changes
2026/05/08 15:09:29 DEBUG : Added file to list of potential conflicts to check: file.txt
2026/05/08 15:09:29 DEBUG : There are potential conflicts to check.
2026/05/08 15:09:29 INFO : Checking potential conflicts...
2026/05/08 15:09:29 DEBUG : Local file system at /content/dst: Waiting for checks to finish
2026/05/08 15:09:29 DEBUG : file.txt: size = 12 OK
2026/05/08 15:09:29 DEBUG : file.txt: md5 = 49568d3b721eefe499641ae067dcaf5a (Local file system at /content/src)
2026/05/08 15:09:29 DEBUG : file.txt: md5 = b561e8fbaf96a46dcb0b146ff02d2d87 (Local file system at /content/dst)
2026/05/08 15:09:29 ERROR : file.txt: md5 differ
2026/05/08 15:09:29 NOTICE: Local file system at /content/dst: 1 differences found
2026/05/08 15:09:29 NOTICE: Local file system at /content/dst: 1 errors while checking
2026/05/08 15:09:29 INFO : Finished checking the potential conflicts. 1 differences found
2026/05/08 15:09:29 DEBUG : None of the conflicts were determined to be identical.
2026/05/08 15:09:29 NOTICE: - WARNING New or changed in both paths - file.txt
2026/05/08 15:09:29 DEBUG : Files are NOT equal: file.txt
2026/05/08 15:09:29 INFO : file.txt: Path2 is newer. Path1: 2026-05-08 15:09:29.422065532 +0000 UTC, Path2: 2026-05-08 15:09:29.529066496 +0000 UTC, Difference: 107.000964ms
2026/05/08 15:09:29 INFO : file.txt: The winner is: Path2
2026/05/08 15:09:29 NOTICE: - Path1 Renaming Path1 copy - /content/src/file.txt.conflict1
2026/05/08 15:09:29 DEBUG : updated backup-dir for Path1
2026/05/08 15:09:29 DEBUG : file.txt: Need to transfer - File not found at Destination
2026/05/08 15:09:29 INFO : file.txt: Moved (server-side) to: file.txt.conflict1
2026/05/08 15:09:29 NOTICE: - Path1 Queue copy to Path2 - remote:/content/dst/file.txt.conflict1
2026/05/08 15:09:29 NOTICE: - Path2 Not renaming Path2 copy, as it was determined the winner - remote:/content/dst/file.txt.conflict2
2026/05/08 15:09:29 NOTICE: - Path2 Queue copy to Path1 - /content/src/file.txt.conflict2
2026/05/08 15:09:29 INFO : - Path2 Do queued copies to - Path1
2026/05/08 15:09:29 DEBUG : updated backup-dir for Path1
2026/05/08 15:09:29 DEBUG : Local file system at /content/src: Waiting for checks to finish
2026/05/08 15:09:29 DEBUG : Local file system at /content/src: Waiting for transfers to finish
2026/05/08 15:09:29 DEBUG : Waiting for deletions to finish
2026/05/08 15:09:29 DEBUG : failed to marshal input: json: unsupported type: operations.LoggerFn
2026/05/08 15:09:29 DEBUG : b.queueOpt.logger:
2026/05/08 15:09:29 DEBUG : Got 0 results for copy2to1
2026/05/08 15:09:29 DEBUG : syncing empty dirs
2026/05/08 15:09:29 INFO : - Path1 Do queued copies to - Path2
2026/05/08 15:09:29 DEBUG : updated backup-dir for Path2
2026/05/08 15:09:29 DEBUG : writing result:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": {},
"Side": "src",
"Err": null
},
"IsWinner": true,
"IsSrc": true,
"IsDst": false,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : writing result:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": {},
"Side": "src",
"Err": null
},
"IsWinner": false,
"IsSrc": false,
"IsDst": true,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : file.txt.conflict1: Need to transfer - File not found at Destination
2026/05/08 15:09:29 DEBUG : Local file system at /content/dst: Waiting for checks to finish
2026/05/08 15:09:29 DEBUG : Local file system at /content/dst: Waiting for transfers to finish
2026/05/08 15:09:29 DEBUG : file.txt.conflict1.c161d9ea.partial: size = 12 OK
2026/05/08 15:09:29 DEBUG : file.txt.conflict1: md5 = 49568d3b721eefe499641ae067dcaf5a OK
2026/05/08 15:09:29 DEBUG : file.txt.conflict1.c161d9ea.partial: renamed to: file.txt.conflict1
2026/05/08 15:09:29 INFO : file.txt.conflict1: Copied (new)
2026/05/08 15:09:29 DEBUG : Waiting for deletions to finish
2026/05/08 15:09:29 DEBUG : failed to marshal input: json: unsupported type: operations.LoggerFn
2026/05/08 15:09:29 DEBUG : b.queueOpt.logger:
2026/05/08 15:09:29 DEBUG : result:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": true,
"IsSrc": true,
"IsDst": false,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : result:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": false,
"IsSrc": false,
"IsDst": true,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : Got 2 results for copy1to2
2026/05/08 15:09:29 DEBUG : - 12 2026-05-08 15:09:29.422065532 +0000 UTC "file.txt.conflict1"
2026/05/08 15:09:29 DEBUG : - 12 2026-05-08 15:09:29.422065532 +0000 UTC "file.txt.conflict1"
2026/05/08 15:09:29 DEBUG : syncing empty dirs
2026/05/08 15:09:29 INFO : Updating listings
2026/05/08 15:09:29 DEBUG : updating 2to1
2026/05/08 15:09:29 DEBUG : results:
null
2026/05/08 15:09:29 DEBUG : queue:
{
"file.txt.conflict2": null
}
2026/05/08 15:09:29 DEBUG : file.txt.conflict2: file in queue but missing from src transfers
2026/05/08 15:09:29 DEBUG : file.txt.conflict2: file in queue but missing from dst transfers
2026/05/08 15:09:29 DEBUG : 2to1: srcOldName: file.txt srcNewName: file.txt.conflict2 dstOldName: file.txt dstNewName: file.txt.conflict1
2026/05/08 15:09:29 DEBUG : updating 1to2
2026/05/08 15:09:29 DEBUG : results:
[
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": true,
"IsSrc": true,
"IsDst": false,
"Origin": "sync"
},
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": false,
"IsSrc": false,
"IsDst": true,
"Origin": "sync"
}
]
2026/05/08 15:09:29 DEBUG : queue:
{
"file.txt.conflict1": null
}
2026/05/08 15:09:29 DEBUG : winner: copy to src:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": true,
"IsSrc": true,
"IsDst": false,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : winner: copy to dst:
{
"Src": "/content/src/",
"Dst": "",
"Name": "file.txt.conflict1",
"AltName": "",
"Size": 12,
"Modtime": "2026-05-08T15:09:29.422065532Z",
"Hash": "",
"Flags": "-",
"Sigil": 43,
"Err": null,
"Winner": {
"Obj": null,
"Side": "src",
"Err": null
},
"IsWinner": true,
"IsSrc": true,
"IsDst": false,
"Origin": "sync"
}
2026/05/08 15:09:29 DEBUG : decision: copied to src: file.txt.conflict1
2026/05/08 15:09:29 DEBUG : decision: copied to dst: file.txt.conflict1
2026/05/08 15:09:29 DEBUG : 1to2: srcOldName: file.txt srcNewName: file.txt.conflict1 dstOldName: file.txt dstNewName: file.txt.conflict2
2026/05/08 15:09:29 INFO : Validating listings for Path1 "/content/src/" vs Path2 "remote:/content/dst/"
2026/05/08 15:09:29 DEBUG : 2026-05-08 15:09:29.422065532 +0000 UTC: modification time the same (differ by 0s, within tolerance 1ns)
2026/05/08 15:09:29 DEBUG : 2026-05-08 15:09:28.210054609 +0000 UTC: modification time the same (differ by 0s, within tolerance 1ns)
2026/05/08 15:09:29 DEBUG : Lock file removed: /root/.cache/rclone/bisync/content_src..remote__content_dst.lck
2026/05/08 15:09:29 INFO : Bisync successful
2026/05/08 15:09:29 INFO :
Transferred: 24 B / 24 B, 100%, 0 B/s, ETA -
Checks: 3 / 3, 100%, Listed 5
Renamed: 1
Transferred: 2 / 2, 100%
Server Side Moves: 1 @ 12 B
Elapsed time: 0.0s
2026/05/08 15:09:29 DEBUG : 6 go routines active