This is not simply a small defective block, but an entire missing (default) 50 MB file, correct?
I don’t think any backup program deals well with completely unreliable storage. You can ask.
Some (including Duplicati) have considered PAR2, but it’s not well suited IMO for file losses.
What you’re almost asking for is to store multiple complete file copies remotely. How many?
Duplicati guards against Internet connection glitches many ways. Reported errors are retried.
number-of-retries and retry-delay control this. You can see retries in a log taken at retry level.
About → Show log → Live → Retry is simplest, but you can also log to a log file if you prefer.
Unreported errors, such as successful download with “wrong” content, are caught and retried.
You can watch that. Checks may be size, hash, and whether or not content can be decrypted.
Missing files and files with wrong size are detected by file listing both before and after backup.
This can be turned off. That’s dangerous, but some people may to choose to turn off warnings.
Verifying backend files is also done, but it’s a small sample. This can be optioned higher or off.
You can’t currently add more redundancy, but you can add more checks of file internal content.
backup-test-samples and backup-test-percentage control that. Downloads take time though…
You can also remove the no-backend-verification
option if you’re currently configuring that.
This should quite quickly find severe problems like missing files or wrong-length (empty?) ones.
FileBackend file size verification #4691 proposes earlier detection of files uploading wrong size.
This will allow a retry right at time of upload, which is the time when data is available for upload.
It’s somewhat inspired by suspect error reporting/handling with network drives like you’re using.
Even local SMB appears unreliable. It’s not clear why. Duplicati treats shares like ordinary files,
allowing Windows to run its magic underneath. Sometimes, apparently, the magic doesn’t work.
Used where? I think this is also a Repair
option (not other operations). Is that where you did it?
From About → Changelog, there is this 2018 comment:
Removed automatic attempts to rebuild dblock
files as it is slow and rarely finds all the missing pieces (can be enabled with --rebuild-missing-dblock-files
).
The key word might be “all”. Pieces disappear from the source over time as the source changes.
Works fine here in GUI Commandline. It doesn’t say a lot, but you can open another tab to watch.
About → Show log → Live → Verbose might be good. Use Information for less, Profiling for more.
Here’s a list-broken-files quickly telling me about a file that I intentionally emptied to see behavior:
Listing remote folder …
remote file duplicati-b1132cd156c1f4fac9478334f587f427a.dblock.zip.aes is listed as Verified with size 0 but should be 989, please verify the sha256 hash “IFZrMO8aVxL8i0aNVq14T8mEok2OrOg+PwTOZ3QWui4=”
Delete that file, and behavior changes to tell me the implications for source files from the broken file:
Listing remote folder ...
2 : 6/2/2022 9:11:42 AM (1 match(es))
C:\backup source\B.txt (1 bytes)
1 : 6/2/2022 9:19:35 AM (1 match(es))
C:\backup source\B.txt (1 bytes)
0 : 6/2/2022 9:24:11 AM (1 match(es))
C:\backup source\B.txt (1 bytes)
I had emptied the dblock from 9:11, and that affects the later backups. Version 0 is always the latest.
purge-broken-files purges the broken B.txt file from the backup, so has to update three dlist files too:
Listing remote folder ...
Uploading file (957 bytes) ...
Deleting file duplicati-20220602T131142Z.dlist.zip.aes ...
Uploading file (1.03 KB) ...
Deleting file duplicati-20220602T131935Z.dlist.zip.aes ...
Uploading file (1.11 KB) ...
Deleting file duplicati-20220602T132411Z.dlist.zip.aes ...
Controlling write-through behaviors in SMB is Microsoft explaining how caching complicates things.
Although we get problems even on a LAN, going over the Internet is probably making things worse.
@frank might want to see whether forcing writethrough helps. “Continuous availability” might also, however I think that’s something not all servers implement. Also discussed in Veeam blog and site.
SMB/CIFS comes in a large number of flavors, and has lots of options. I’m not expert in all of this.
A few times, the person with issue tried debug with Sysinternals Process Monitor. No conclusions.
You’d like the underlying transport and storage to just work, but sometimes it doesn’t cooperate…