Can you PM me a log file?
Yes I’d be happy to, just let me know what log you’re looking for and how to find or generate the log.
One thing you can try is to select a chunk that was reported as corrupt but has since been verified, download it multiple times to see if downloaded files are different.
Very interesting. When using the official B2 CLI with b2 download-file-by-name [bucket-name] chunks/[chunkid]
, the downloads seem to almost always fail on the chunks in question. I arbitrarily chose 4 chunks that initially failed to validate with duplicacy check
but later verified, and ran them in a download loop 100 times each. In those 400 download attempts, I was never able to get a single successful download; I always get an SHA1 checksum mismatch.
It seems many repeated attempts are not very helpful. However I ran downloads again once per corrupt-but-later-verified chunk (there are 38 of these), and I was able to successfully get 3 to download with download-file-by-name
. I even found an instance of a chunk flip-flopping between good and bad (chunkid refers to one single chunk in the snippet below):
[user@host duplicacy]$ b2 download-file-by-name [bucket] chunks/[chunkid] 4
4: 100%|███████████████████████████████████| 3.27M/3.27M [00:00<00:00, 44.9MB/s]
ConsoleTool command error
Traceback (most recent call last):
File "b2/console_tool.py", line 1521, in run_command
File "b2/console_tool.py", line 690, in run
File "logfury/v0_1/trace_call.py", line 84, in wrapper
File "b2sdk/bucket.py", line 170, in download_file_by_name
File "logfury/v0_1/trace_call.py", line 84, in wrapper
File "b2sdk/transfer/inbound/download_manager.py", line 122, in download_file_from_url
File "b2sdk/transfer/inbound/download_manager.py", line 134, in _validate_download
b2sdk.exception.ChecksumMismatch: sha1 checksum mismatch -- bad data
ERROR: sha1 checksum mismatch -- bad data
[user@host duplicacy]$ b2 download-file-by-name [bucket] chunks/[chunkid] 5
5: 100%|███████████████████████████████████| 3.27M/3.27M [00:00<00:00, 49.9MB/s]
ConsoleTool command error
Traceback (most recent call last):
File "b2/console_tool.py", line 1521, in run_command
File "b2/console_tool.py", line 690, in run
File "logfury/v0_1/trace_call.py", line 84, in wrapper
File "b2sdk/bucket.py", line 170, in download_file_by_name
File "logfury/v0_1/trace_call.py", line 84, in wrapper
File "b2sdk/transfer/inbound/download_manager.py", line 122, in download_file_from_url
File "b2sdk/transfer/inbound/download_manager.py", line 134, in _validate_download
b2sdk.exception.ChecksumMismatch: sha1 checksum mismatch -- bad data
ERROR: sha1 checksum mismatch -- bad data
[user@host duplicacy]$ b2 download-file-by-name [bucket] chunks/[chunkid] 6
6: 100%|███████████████████████████████████| 3.27M/3.27M [00:00<00:00, 47.1MB/s]
File name: chunks/[chunkid]
File id: [fileid]
File size: 3267110
Content type: application/octet-stream
Content sha1: [sha1]
checksum matches
So it does in fact seem like B2, or at least my files on B2, are hosed.
But one question for Duplicacy: is it sending SHA1 checksums on upload? That should at least prevent transmission errors.