elliottslaughter / integrity-checker

Backup integrity checker
Apache License 2.0
21 stars 2 forks source link

ick diff a little confusing? #2

Open jimmcslim opened 4 years ago

jimmcslim commented 4 years ago

First of all, thanks for this tool! I've been looking for something like this (OSS) for a while, and have even been contemplating writing such a tool in Rust (to learn Rust) myself!

I find ick diff a little confusing; it wasn't obvious to me whether to pass in the full name of the database (e.g. db.json.gz), or just the db name (db). The latter appears to be the correct solution?

Also, I used this to compare a photo library on an externally mounted disk vs a photo library on a NAS. I though I would be able to copy the ick library from the NAS to be side by side with the library on the external disk and run ick diff photo photo.nas (i.e. so I have files photo.json.gz and photo.nas.json.gz side by side) - however I'm not sure it worked; it did return 0. But when I run (from the directory that photo is located in) ick diff photo /Volume/photo/photo.nas (/Volume/photo being the path to the NAS locally mounted) then I get informed of some differences... so it seems that you can't move a database away from the context in which it was generated? But then having /Volume/photo/photo.nas in the command seems a bit odd as it looks like a file path, but there is no file just named photo.nas.

Also it would be good if ick diff indicated which files have been added/changed/removed between the two different databases being compared.

But thanks again... I may take a look at the source code and see if I can understand things better and maybe even make some contributions!

elliottslaughter commented 4 years ago

Hi and welcome,

have even been contemplating writing such a tool in Rust (to learn Rust) myself!

Yup, that's pretty much my motivation too.

it wasn't obvious to me whether to pass in the full name of the database (e.g. db.json.gz), or just the db name (db)

Thinking about this some more, I agree with this. I think the tool really shouldn't be doing any magic with the filenames (e.g. you wouldn't expect tar to automatically add .tar.gz to the name of your archive). This is probably worth another issue so we don't forget.

however I'm not sure it worked; it did return 0

That means no differences, but I could see adding a message to make that explicit. (And perhaps a -q flag to silence it.

so it seems that you can't move a database away from the context in which it was generated?

That's odd, all the paths should be relative to the root. If you want to debut this more, let me know.

Also it would be good if ick diff indicated which files have been added/changed/removed between the two different databases being compared.

Yeah, it only prints on suspicious changes at the moment, but I agree this should be an option (and possibly the default).

I may take a look at the source code and see if I can understand things better and maybe even make some contributions!

Yup, PRs are definitely welcome, and let me know if you have any questions about the source.