What is the problem you are having with rclone?
Rclone is not checking the contents of the files on my "crypt" remote. It is bypassing the content integrity checks altogether, using only the size and modification time. I've tried everything I can think of to get rclone to perform content checks, but it simply is not happening. What can I do to get rclone to actually check my data?
I need to know whether my files were perfectly uploaded to cloud (with no bit flips), and I'd like to occasionally check my uploaded copy for bit rot. Right now, I cannot see any way to do either of these things. Am I missing something? This seems like a fundamental issue that would affect nearly everyone.
Run the command 'rclone version' and share the full output of the command.
rclone version
rclone v1.67.0
- os/version: linuxmint 21.3 (64 bit)
- os/kernel: 6.5.0-1023-oem (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.22.4
- go/linking: static
- go/tags: none
This is the current version of rclone:
Which cloud storage system are you using? (eg Google Drive)
I'm using "pcloud" as my storage system. Pcloud provides both a regular unencrypted filesystem and a custom encrypted "Crypto" folder. I'm using the regular filesystem and NOT the special "Crypto" folder.
The command you were trying to run (eg rclone copy /tmp remote:tmp
)
I created a "pcloud" remote in the EU region. According to the rcloud documentation, "sha1" is supported by this cloud provider.
Next, I created an encrypted "crypt" remote on top of the plain-text "pcloud" remote.
Then I attempted to upload my files to the cloud. For testing purposes, I created a folder on my local filesystem like this:
a/
a.txt # "a"
I also created a second corrupted copy, where one of the files has a single-byte error:
b/
a.txt # "b"
...and then I set the timestamps to be identical for both the original and corrupted versions:
touch -r 'a/a.txt' 'b/a.txt'
At this point, I mounted the "crypt" filesystem, in order to provide some visibility into the cloud filesystem:
rclone mount 'crypt:' 'crypt'
And then I ran the command:
rclone sync 'a/' 'crypt:a/'
Using the "crypt" mount point, I manually verified that the directory was uploaded successfully.
And now I attempted to synchronize from the corrupted directory (simulating a bit flip in either one of the copies):
rclone sync 'b/' 'crypt:a/'
Now the source and remote files do not match, so the remote file ("crypt:a/a.txt") should be updated to match the new source file ("b/a.txt"). This did not happen. There were no corrections to the remote file, and no errors that would reveal any discrepancy.
In hopes of adding support for the deeper data checks, I created a "hasher" remote on top of my "crypt" remote, and I repeated the experiment with the "hasher" remote:
rclone sync 'b/' 'hasher:a/' \
--hasher-max-age 0 \
--hasher-auto-size 1P
The results were the same: rclone did not synchronize the files or reveal any discrepancy.
Single-bit flips do happen during network transfers, and on a somewhat regular basis. How can I ever know if my files were uploaded correctly? I don't see any way. Am I missing something?
Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.
rclone config redacted
[pcloud]
type = pcloud
hostname = eapi.pcloud.com
token = XXX
[crypt]
type = crypt
remote = pcloud:
filename_encryption = standard
directory_name_encryption = true
password = XXX
[hasher]
type = hasher
remote = crypt:
hashes = sha1
max_age = 0s
A log from the command that you were trying to run with the -vv
flag
I'm not sure what would be helpful here. If you need any additional information, you can ask me for anything.