Personally, if I was you, I’d run that memtest86+ a few passes just to be sure you don’t have an issue with RAM. Because Duplicacy is pretty robost and bad chunks shouldn’t normally happen - especially to cloud storage. (I can’t say the same for missing chunks, but that’s another topic )
Erasure Coding is pretty useful for local backups, but you shouldn’t need to have it on for B2 (and indeed, it’ll use extra storage space for no real advantage). The good news is you can have an Erasure Coded local storage and copy to a non-Erasure B2 storage.
Again, you can save time by removing all snapshot files and letting Duplicacy fix missing chunks. However, keep in mind it won’t fix chunks that are corrupted - if it sees the deterministic chunk ID on the storage already, it’ll assume it’s in good nick and move onto uploading the next.
This is why you should weed out every bad chunk by deleting them or renaming out of the way. A missing chunk is actually better than a bad chunk (excluding Erasure Coding). You can really only do that with at least one snapshot file, then running a check -chunks
or otherwise reading from storage to reveal what’s bad.
Since egress is usually expensive with B2, you can cheat and skip most of the re-upload. Here’s how I’d do it:
- Create a brand new local storage and make it copy-compatible with B2, add Erasure Coding 5:2
- Backup to your local storage, using IDs different to that of your B2 storage. This is called pre-seeding.
- Copy B2 to local (existing chunks should be skipped, bad chunks will be highlighted to you).
- If you run into bad chunks on B2, delete/rename them and keep copying to local (don’t worry, the bad chunk won’t get copied).
- Delete all snapshot IDs in
snapshots/
on your B2 storage (you should now only have good chunks/
)
- Cleanup part 1. Delete whichever IDs on your local storage you want to keep (in fact, you can do it all again; wipe your local
snapshots/
and do a last round of local backups if you wanted).
- Copy your local to B2 (again, most chunks should already exist - you’re only sending snapshot IDs).
- Cleanup part 2. Now that you have at least one snapshot ID on local and B2, you can remove unreferenced chunks on both with a
prune -exclusive
.
That’s if you wanna save time/cost with your B2 storage.
Many people want to start from scratch and that’s perfectly understandable, but if you know how Duplicacy works a little bit under the hood - the way it’s been designed makes it extremely possible to fix (remote) storages in these circumstances.