How can I compare two directories, one being a remote directory?
I want to compare two directories, one is local and the other is on another machine.
How can I do that? Can I do it with diff
?
I can think of two ways here..
Mount your remote directory locally, and then use diff as you would do on a local machine.
Use
rsync
:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
This will show you the files that differ, but will not show you the actual diff
. I think Unison supports diff also, but I have never used it and it does not seem to be under development any more.
If you just want to determine whether they're identical or not, something like
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
...should give you a single checksum over the entire contents (except empty subdirectories). So you can run this on both machines and compare the outputs.
Note that using diff
will require the entire contents of the remote directory to be transferred over the network, which could become prohibitively slow if there are large files or large numbers of files involved.
My recommendation would be to first determine which files differ between the two machines (by using rsync -n --delete
(-n
causes it to only tell you what it would do, but without actually doing it; --delete
will tell you if any files exist in the destination, but not in the source, because it will want to delete them) or by comparing md5sum
s. If you're looking for how they're different (rather than just if they're different), I would then use diff
only on those specific files to see what the differences are.