The CLI looks great, the code impressively clean and concise. Do I understand it right that this is a completely independent implementation and not wrapping any restic code? As redundancy counts with backups, it is also good to know that there are two tools available to restore data.
At its core, restic has a fairly simple data storage model. It reminds of the elegant Git Plumbing-and-Porcelain design with the only difference that restic plumbing also provides encryption and authentication codes.
I can only recommend everyone to take a look at the internals. It is very informative.
I fully agree! When writing rustic, I also just used that document in the beginning. While it is very good to get things starting, I must say there are some details which are not described and where I needed to have a look at the code - to be fair, this is all metadata which might not be top prio when restoring:
The snapshot file json format is not really described in the design document; it is more an example of an old version
The tree json format is not only not described, but also yields some surprises like an in-fact quoted file name (using a go specific quoting) or file modes which are defined in a go-specific manner.
I wanted to submit a PR to point these things out in the design document but so far didnโt find enough timeโฆ