HashType Mismatch with --slow-hash-sync-only in OneDrive-Local Bisync

What is the problem you are having with rclone?

I'm observing inconsistent behavior in rclone bisync when using the --slow-hash-sync-only flag for OneDrive(path1)-to-Local(path2) directory synchronization. Specifically:

  1. When --slow-hash-sync-only is added, logs show HashType1: 0 and HashType2: 512, with "ignore checksum" messages for Path2.
  2. When the flag is removed, HashType1 and HashType2 both become 512, and no "ignore checksum" logs appear.

My confusion is twofold:

  • What do HashType1 and HashType2 represent?
  • With --slow-hash-sync-only, I expected HashType1 (OneDrive) to use a slow hash (e.g., 512) and HashType2 (local) to skip slow hashes (e.g., 0). Why is the opposite happening (HashType1: 0, HashType2: 512)?

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

rclone v1.70.3

  • os/version: Microsoft Windows 11 Home China 24H2 24H2 (64 bit)
  • os/kernel: 10.0.26100.4770 (x86_64)
  • os/type: windows
  • os/arch: amd64
  • go/version: go1.24.4
  • go/linking: static
  • go/tags: cmount

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

OneDrive

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

With --slow-hash-sync-only:

rclone bisync onedrive:x d:/y --create-empty-src-dirs --compare size,modtime,checksum --slow-hash-sync-only --resilient --fix-case -MvP -1 -n

Without --slow-hash-sync-only:

rclone bisync onedrive:x d:/y --create-empty-src-dirs --compare size,modtime,checksum --resilient --fix-case -MvP -1 -n

Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

[icloud]
type = iclouddrive
apple_id = XXX
password = XXX
cookies = XXX
trust_token = XXX

A log from the command that you were trying to run with the -vv flag

With --slow-hash-sync-only:

2025/08/03 23:05:32 NOTICE: bisync is IN BETA. Don't use in production!
2025/08/03 23:05:32 NOTICE: OneDrive root 'x': will use quickxor for same-side diffs on Path1 only
2025/08/03 23:05:32 INFO  : Slow hash detected on Path2. Will ignore checksum due to slow-hash settings
2025/08/03 23:05:32 NOTICE: Ignoring checksums during --resync as --slow-hash-sync-only is set.
2025/08/03 23:05:32 INFO  : Bisyncing with Comparison Settings:
{
        "Modtime": true,
        "Size": true,
        "Checksum": true,
        "HashType1": 0,
        "HashType2": 512,
        "NoSlowHash": false,
        "SlowHashSyncOnly": true,
        "SlowHashDetected": true,
        "DownloadHash": false
}
2025/08/03 23:05:32 INFO  : Synching Path1 "onedrive:x/" with Path2 "d:\y\"
2025/08/03 23:05:32 INFO  : Copying Path2 files to Path1
2025/08/03 23:05:32 NOTICE: - Path2    Resync is copying files to         - Path1
2025/08/03 23:05:33 INFO  : There was nothing to transfer
2025/08/03 23:05:33 NOTICE: - Path1    Resync is copying files to         - Path2
2025/08/03 23:05:33 NOTICE: Differential Synchronization.pdf: Skipped copy as --dry-run is set (size 313.199Ki)
2025/08/03 23:05:33 NOTICE: i.PNG: Skipped copy as --dry-run is set (size 549.120Ki)
2025/08/03 23:05:33 INFO  : Resync updating listings
2025/08/03 23:05:34 INFO  : Bisync successful
Transferred:      862.319 KiB / 862.319 KiB, 100%, 0 B/s, ETA -
Checks:                 0 / 0, -, Listed 6
Transferred:            2 / 2, 100%
Elapsed time:         1.2s
2025/08/03 23:05:34 NOTICE:
Transferred:      862.319 KiB / 862.319 KiB, 100%, 0 B/s, ETA -
Checks:                 0 / 0, -, Listed 6
Transferred:            2 / 2, 100%
Elapsed time:         1.2s

Without --slow-hash-sync-only:

2025/08/03 23:07:31 NOTICE: bisync is IN BETA. Don't use in production!
2025/08/03 23:07:31 INFO  : Bisyncing with Comparison Settings:
{
        "Modtime": true,
        "Size": true,
        "Checksum": true,
        "HashType1": 512,
        "HashType2": 512,
        "NoSlowHash": false,
        "SlowHashSyncOnly": false,
        "SlowHashDetected": true,
        "DownloadHash": false
}
2025/08/03 23:07:31 INFO  : Synching Path1 "onedrive:x/" with Path2 "d:\y\"
2025/08/03 23:07:31 INFO  : Copying Path2 files to Path1
2025/08/03 23:07:31 NOTICE: - Path2    Resync is copying files to         - Path1
2025/08/03 23:07:32 INFO  : There was nothing to transfer
2025/08/03 23:07:32 NOTICE: - Path1    Resync is copying files to         - Path2
2025/08/03 23:07:32 NOTICE: Differential Synchronization.pdf: Skipped copy as --dry-run is set (size 313.199Ki)
2025/08/03 23:07:32 NOTICE: i.PNG: Skipped copy as --dry-run is set (size 549.120Ki)
2025/08/03 23:07:32 INFO  : Resync updating listings
2025/08/03 23:07:33 INFO  : Bisync successful
Transferred:      862.319 KiB / 862.319 KiB, 100%, 0 B/s, ETA -
Checks:                 0 / 0, -, Listed 6
Transferred:            2 / 2, 100%
Elapsed time:         1.4s
2025/08/03 23:07:33 NOTICE:
Transferred:      862.319 KiB / 862.319 KiB, 100%, 0 B/s, ETA -
Checks:                 0 / 0, -, Listed 6
Transferred:            2 / 2, 100%
Elapsed time:         1.4s

To clarify one thing up front:

  • local supports all hash types, but supports them slowly. (i.e. they are not cached – rclone needs to recalculate them when they are needed.)
  • onedrive supports only QuickXorHash, which is not considered a “slow” hash type.
  • Therefore, when bisyncing between local and onedrive, there is a “slow” hash on one side, but not the other.

They represent the hashtype used for bisync on path1 and path2, respectively. 512 is the code for QuickXorHashand 0 is none. We should probably display these in a more human-readable way in the logs.

Since local and onedrive have only one hashtype in common (QuickXorHash), normally that is the one that would be used. That is why in your second example, they both show 512.

However, with --slow-hash-sync-only, you have instructed bisync to not generate hashes on the local side, where it can only do so slowly. That is why in your first example, one side is set to 0.

That said, I agree with you that it appears to be the wrong side. I would have expected it to be HashType2, not HashType1. I think there is a bug here:

and I’ve never noticed it until now because I run bisync with the slow side on path1!

Thank you for pointing this out. Would you like to have the honors of submitting the one-line fix?

UPDATE: I went ahead and did it, to make sure this would be fixed in v1.71 which is coming today!

1 Like

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