iDrive base64 or base32768?

What is the problem you are having with rclone?

Long file names causing unsupported characters error.

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

rclone v1.67.0-beta.8014.8bc00b6ad.s3-fix-405-error
- os/version: ubuntu 22.04 (64 bit)
- os/kernel: 5.15.0-112-generic (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.22.4
- go/linking: static
- go/tags: none

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

IDrive e2

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

rclone bisync "idrive-sync-crypt:/" "/home/salty/sync/" --check-access --fast-list --verbose --filter-from=/home/salty/.config/rclone/filters --links --recover --ignore-checksum --error-on-no-transfer
[idrive-sync]
type = s3
provider = IDrive
access_key_id = XXX
secret_access_key = XXX
acl = private
endpoint = x3k6.ie.idrivee2-50.com
bucket_acl = private
no_check_bucket = true
server_side_encryption = aws:kms

[idrive-sync-crypt]
type = crypt
remote = idrive-sync:sync
password = XXX
password2 = XXX

I shortened the filename because I was trying to confirm another fix so I do not have a log, but the error about unsupported characters seems common on the forum.

There are some threads recommending base64 file encoding to resolve this but I did find one that explored using base32768 with IDrive. This lead to a bug report though it seems the issue was down to each of the specific different characters the test uses requiring extra escape characters.

It the issue is with base32768 and IDrive is just down to the specific characters and their escapes used in the test, does this mean I should opt for this over base64?

I am still setting up so my remote is only 10 GiB, can you please tell me if the steps below will resolve this:

  • move the local directory to a backup
  • backup rclone.conf
  • rclone config delete idrive-sync-crypt
  • on the IDrive web UI remove all files in the bucket
  • recreate the crypt using the config wizard
  • manually add a line for filename_encoding = base64
  • create RCLONE_TEST and run a basic test of rclone sync
  • run the bisync command for the first time only with --re-sync
  • copy all files from backup local into the new
  • run bisync again without --re-rync

The docs mention a --crypt-filename-encoding argument, where exactly should I use this?

Also, is storage generally moving away from base32, so that at some point in the future that is not likely to cause an issue migrating? Very happy with IDrive but thought it may be worth considering.

I found several more recent threads since recommending base64 for IDrive. Re-created the crypt selecting base64 from the advanced configuration options of the wizard and this seems to work just fine.

All base32, base64 and base32768 are supported when using iDrive.

Max length of any file name here is 1024 characters (assuming 1 byte encoding)

base32 is 5 bits encoding so it allowa to encode 1024*5/8 = 640 bytes
base64 is 6 bits - 1024*6/8 = 768 bytes
base32768 is 15 bits but in case of iDrive every character counts as 2 bytes, so 512*15/8 = 960 bytes

I would use base32768 but base64 is not much worse.

There is no general trend here. Encoding you can use depends on your storage characteristic. Is it case sensitive or not? Does it support all Unicode characters needed by base32768?

base32 is least efficient but most portable - it works everywhere
base64 requires case sensitive storage (Google Drive, S3 etc.)
base32768 requires specific Unicode support

1 Like

If base32768 works it makes sense to switch to that, though I would not like to regret this in the future, which is why I was asking if there was a trend. Is this something that concerns you?

As great as IDrive are, and unlikely as it may be, if in the future I was forced to move my data to another provider, I assume there are ways to migrate directly between providers, once they support the same encoding, without having to fully sync from a local system.

If in the event they do not, and instead my options are limited to base64 or base32, would the option I have seen mentioned move --server-side-across-configs negate this being an issue, so that the only problem would be renaming files that error due to their length?

If you want to be able to move directly between any provider then your only option is base32 - full stop.

But I am not sure why you pay such attention to it. Moving directly or re-encoding everything is the same network bandwidth required. And unless you run it on raspberry pi zero any modern hardware has enough ouph to handle it without sweat.

1 Like

Are base32768 notices like this normal? It goes on like this for another 100 lines or so.

salty@shaker:~/sync$ touch RCLONE_TEST
salty@shaker:~/sync$ rclone copy "/home/salty/sync/" "idrive-sync-crypt:/"
2024/06/15 13:21:33 NOTICE: 2Qc9L17KwfdweniVpK6yCg: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: HuYGsxGbN2o8dyTini2vvA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: Iiee_6CIxFZyxTKTwfpwbA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: KEwfpgiLfbXY4wfpwwHclg: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: NftWL7dKfwwf4EkHiwfpww: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: RLIVwfpJBcbYerwvxSHNHw: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: TMuPEM09wpwfJ-HPqufpFA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: TRTSEbAXgaEOmrwfpwXbUg: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: WV42_wfj57yYqvlx7k0KeA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: aa0AhlKAKCFou7h4CzjGTQ: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: biQ33piYaVgFkAy7_MQGZw: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: cW_wRiinxo-4hfXp6M3fZg: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: chxF7O-eUbgfDJKionXevA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: hR_2FJhLNGCNn98ineU2Ow: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: k3sTjUscZJltvLfninwMZQ: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: mUQYSihKwfpw3JOmOkeQyle3njdjeFCyagqQIiMd1E: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: n3OADossCxioenLtsnaRmdQ: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: nwwmZCGk9HUZwfL6TVugqA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: vu3A6PdU3yZuin9ycSk4LA: Skipping undecryptable dir name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: -3j_gqJw_cqOgkciennS2oj8skgV_hhq-ccdS54zSSEw: Skipping undecryptable file name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: -8C3bhvp5mq-jdJYeinwfjHZoCDz8FNlLMpbGcrfbkY6GkL09aWUXhEczkHqXaJpQ91PMH3rwcFMML_Vt_jDg_TA: Skipping undecryptable file name: illegal base32768 data at input byte 0
2024/06/15 13:21:33 NOTICE: -Ie340zncW8d1uaUJinei3HxcPOVAFihu81ODAaAjMOesOBDvaoOI6DHgZ81OJ3qN: Skipping undecryptable file name: illegal base32768 data at input byte 0

Not sure what you are doing but it looks like base64

You can not mix different encodings. Decide what you want and add it to your config file instead of using command line e.g.:

[my_crypt]
type = crypt
remote = my_remote:crypt_dir
filename_encoding = base32768
filename_encryption = standard
password = XXX
password2 = XXX

Sorry my bad, I forgot to rclone purge first. Thanks.

BTW with rclone test you can also check whether remote can use base32768:

$ rclone test info --check-base32768 iDrive:test
2024/06/15 14:38:13 NOTICE: S3 bucket test path rclone-test-info-puqovil2/test-base32768: 0 differences found
2024/06/15 14:38:13 NOTICE: S3 bucket test path rclone-test-info-puqovil2/test-base32768: 1028 matching files
// iDrive
base32768isOK = true // make sure maxFileLength for 2 byte unicode chars is the same as for 1 byte characters
1 Like

This remark is questionable IMO:) base32768 is still beneficial for remotes where it is not true (like iDrive)

1 Like

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