如何比较两个目录,其中一个是远程目录?

如何比较两个目录,其中一个是远程目录?

我想比较两个目录,一个是本地的,另一个在另一台机器上。

我该怎么做?我可以用 来做吗diff

答案1

我能想到两种方法......

  1. 在本地安装远程目录,然后像在本地机器上一样使用 diff。

  2. 使用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”的工具。它是一个非常好的工具,并且有很多选项。

相关内容