I’m of opinion that backups shall be checked and verified periodically (not tested == broken), but not necessarily with the check command.
I don’t think running check after every operation is prudent.
Duplicacy has three flavors of check:
- Default, to check whether all referenced chunks are present
- With -chunks, to also validate chunk integrity
- With -files, one step further, to verify file integrity
There is a long and detailed discussion I had with @Droolio about merits of each, where i believe last two are pointless (storage must guarantee integrity) and he brought up good points about why they are not (storage may not be trusted, can break guarantees in some corner cases). Another angle there is they storage should support checksumming on demand and duplicacy shall take advantage of that and avoid downloading data when verifying chunks. This will be acceptable and useful. Have a look.
With duplicacy in current state of affairs I don’t use prune. The reasons — it leaves datastore in bad state if interrupted. Data is not lost — but checks will start failing on the ghost snapshots that were supposed to be deleted. I find it unacceptable, and until it’s fixed I’m not using prune.
Without prune the datastore is add-only. Each new revision simply adds data to the datastore without modifying the existing data. Hence, I don’t run check either: existing backup history cannot be corrupted by new backups.
Instead, I verify backup annually by restoring few random files.
The key here — it’s not the only backup, and therefore it does not have to be 100% reliable. If this backup has 0.1% chance of failure, and the other solution also has 0.1% chance of failure, the probability of both of them failing doing the same time is 0.0001%. Aka 0 for all intents and purposes. So, I don’t run duplicacy check.
When the prune is reenabled — I’ll add check, without any arguments — simply because it will take time for me to trust prune again.
Ultimately, it’s cost vs reward. Running check comes with a cost, more so when -chunks or -files flag is used, depending on the storage, and other variables.
On one end of the spectrum is backup to AWS without prune. I don’t check that. I trust AWS to maintain integrity of files and egress is very expensive.
Ok the other end is backup to a single local usb HDD. If I find myself in that situation I probably will be running check -files daily, deleting the log or checked chunks to force all of them to be rechecked daily. It would perform horribly but unless your storage system guarantees data integrity - that’s what you have to do.