我想比较两个目录,一个是本地的,另一个在另一台机器上。
我该怎么做?我可以用 来做吗diff
?
答案1
我能想到两种方法......
在本地安装远程目录,然后像在本地机器上一样使用 diff。
使用
rsync
:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
这将显示不同的文件,但不会显示实际的diff
。我认为齐奏也支持 diff,但我从未使用过它,而且它似乎不再处于开发状态。
答案2
如果你只是想确定它们是否相同,那么
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
...应该会为您提供所有内容(空子目录除外)的单一校验和。因此,您可以在两台机器上运行此程序并比较输出。
答案3
请注意,使用diff
将需要通过网络传输远程目录的全部内容,如果涉及大文件或大量文件,传输速度可能会变得非常慢。
我的建议是首先确定两台机器之间哪些文件不同(通过使用rsync -n --delete
(-n
使它只告诉你它会做什么,但实际上并不做;--delete
会告诉你目标中是否存在任何文件,但源中不存在,因为它会想要删除它们)或通过比较md5sum
。如果你正在寻找如何它们是不同的(而不仅仅是如果如果它们是不同的,那么我只会diff
在那些特定的文件上使用它们来查看它们有什么区别。
答案4
我发现了一个名为“UNISON”的工具。它是一个非常好的工具,并且有很多选项。