Sync to protondrive uses max CPU

STOP and READ USE THIS TEMPLATE NO EXCEPTIONS - By not using this, you waste your time, our time and really hate puppies. Please remove these two lines and that will confirm you have read them.

What is the problem you are having with rclone?

I notice that when using sync to a protondrive destination, the local CPU cores get maxed out even when using options such as --max-age to minimise the number of files to be considered for transfer.

I use the --cpuprofile flag to generate a CPU profile and this is what I got:

Showing nodes accounting for 331.34s, 99.25% of 333.86s total
Dropped 551 nodes (cum <= 1.67s)
      flat  flat%   sum%        cum   cum%
   300.44s 89.99% 89.99%    300.44s 89.99%  crypto/internal/fips140/sha256.blockAVX2
    14.38s  4.31% 94.30%    328.17s 98.30%  crypto/internal/fips140/sha256.(*Digest).Write
     9.59s  2.87% 97.17%      9.59s  2.87%  runtime.memmove
     3.74s  1.12% 98.29%    304.20s 91.12%  crypto/internal/fips140/sha256.block
     3.17s  0.95% 99.24%    331.36s 99.25%  github.com/ProtonMail/go-crypto/openpgp/s2k.Iterated
     0.01s 0.003% 99.24%    331.38s 99.26%  github.com/ProtonMail/go-crypto/openpgp/s2k.(*Cache).GetOrComputeDerivedKey
     0.01s 0.003% 99.25%    331.57s 99.31%  github.com/ProtonMail/go-crypto/openpgp/v2.(*Entity).DecryptPrivateKeys
         0     0% 99.25%    331.56s 99.31%  github.com/ProtonMail/go-crypto/openpgp/packet.(*PrivateKey).decryptWithCache
         0     0% 99.25%    331.56s 99.31%  github.com/ProtonMail/go-crypto/openpgp/packet.DecryptPrivateKeys
         0     0% 99.25%    331.36s 99.25%  github.com/ProtonMail/go-crypto/openpgp/s2k.(*Params).Function.func3
         0     0% 99.25%    331.62s 99.33%  github.com/ProtonMail/gopenpgp/v3/crypto.(*Key).Unlock
         0     0% 99.25%    274.73s 82.29%  github.com/rclone/Proton-API-Bridge.(*ProtonDrive).GetActiveRevisionAttrs
         0     0% 99.25%     58.61s 17.56%  github.com/rclone/Proton-API-Bridge.(*ProtonDrive).ListDirectory
         0     0% 99.25%    282.42s 84.59%  github.com/rclone/Proton-API-Bridge.(*ProtonDrive).getLinkKR
         0     0% 99.25%     50.16s 15.02%  github.com/rclone/Proton-API-Bridge.(*ProtonDrive).getLinkKRByID
         0     0% 99.25%    332.06s 99.46%  github.com/rclone/go-proton-api.Link.GetKeyRing
         0     0% 99.25%    333.36s 99.85%  github.com/rclone/rclone/backend/protondrive.(*Fs).List
         0     0% 99.25%     58.61s 17.56%  github.com/rclone/rclone/backend/protondrive.(*Fs).List.func1
         0     0% 99.25%    274.73s 82.29%  github.com/rclone/rclone/backend/protondrive.(*Fs).newObjectWithLink
         0     0% 99.25%    274.73s 82.29%  github.com/rclone/rclone/backend/protondrive.(*Fs).readMetaDataForLink
         0     0% 99.25%    274.73s 82.29%  github.com/rclone/rclone/backend/protondrive.(*Fs).readMetaDataForLink.func1
         0     0% 99.25%    333.39s 99.86%  github.com/rclone/rclone/fs.pacerInvoker
         0     0% 99.25%    333.38s 99.86%  github.com/rclone/rclone/fs/list.DirSortedFn
         0     0% 99.25%    333.38s 99.86%  github.com/rclone/rclone/fs/list.listP
         0     0% 99.25%    333.38s 99.86%  github.com/rclone/rclone/fs/march.(*March).makeListDir.func1
         0     0% 99.25%    333.36s 99.85%  github.com/rclone/rclone/fs/march.(*March).processJob.func2
         0     0% 99.25%    333.39s 99.86%  github.com/rclone/rclone/lib/pacer.(*Pacer).Call
         0     0% 99.25%    333.39s 99.86%  github.com/rclone/rclone/lib/pacer.(*Pacer).call
         0     0% 99.25%    333.40s 99.86%  sync.(*WaitGroup).Go.func1

Should it really be spending all that time doing sha256 computation when it's doing literally a handful of checks and zero transfers ? (source tree contains a few thousand files).

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

rclone v1.76.0-beta.10399.cfb90e3eb

  • os/version: ubuntu 22.04 (64 bit)
  • os/kernel: 6.8.0-124-generic (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.26.5
  • go/linking: dynamic
  • go/tags: none

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

protondrive

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

rclone sync /home/markb/smartavionics/XXX proton:smartavionics/XXX -P --links --protondrive-replace-existing-draft=true --no-update-modtime \
  --log-file backup.log --log-file-max-size 1M --log-file-max-backups 3 --max-age 1w

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

[proton]
type = protondrive
username = burtoogle
password = XXX
client_uid = XXX
client_access_token = XXX
client_refresh_token = XXX
client_salted_key_pass = XXX

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

2026/09/26 07:54:37 NOTICE: proton drive root link ID 'smartavionics/projects/pb5-ui': 401 GET https://drive-api.proton.me/core/v4/users: Invalid access tok
en (Code=401, Status=401), Attempt 1
2026/09/26 07:54:37 ERROR : proton drive root link ID 'smartavionics/projects/pb5-ui': 401 GET https://drive-api.proton.me/core/v4/users: Invalid access tok
en (Code=401, Status=401)
2026/09/26 07:55:16 NOTICE: proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4w
VXA/files: A file or folder with that name already exists (Code=2500, Status=422), Attempt 1
2026/09/26 07:55:16 ERROR : proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4w
VXA/files: A file or folder with that name already exists (Code=2500, Status=422)
2026/09/26 07:55:16 NOTICE: proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422), Attempt 1
2026/09/26 07:55:16 ERROR : proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422)
2026/09/26 07:55:32 NOTICE: proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422), Attempt 1
2026/09/26 07:55:32 ERROR : proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422)
2026/09/26 07:55:32 NOTICE: proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422), Attempt 1
2026/09/26 07:55:32 ERROR : proton drive root link ID 'smartavionics/projects/pb5-ui': 422 POST https://drive-api.proton.me/drive/shares/1du46izARGQ4uEzIJ4wVXA/files: A file or folder with that name already exists (Code=2500, Status=422)

yeah that profile is the proton link key unlock path.

s2k.Iterated + sha256 is chewing cpu while List / GetActiveRevisionAttrs walks the remote. --max-age still has to decrypt those link keys so it doesnt save u there.

-cut --checkers to 1 or 2
-same for --transfers
-rclone copy --max-age 1w ... instead of sync if u only need new local stuff pushed (less march work)

big trees on protondrive just do this for me.

Hi, thanks a lot for the swift reply, I will try those suggestions.

hi,

can you pick just one single file. post for both the source flle and the dest file.
rclone hashsum sha1
rclone lsl


not sure about your use-case, but might want to experiment with flags such as
--ignore-checksum
--size-only