如何比较目录(Linux)

我有两个目录 – 一个来自较早的备份,另一个来自最新的备份。 我如何比较Linux上最新备份对目录中的文件所做的更改? 另外我如何显示例如文本和PHP文件的变化 – 我在想维基百科上的修订历史的东西,你在屏幕的一侧看到旧版本和其他最新版本,突出显示的变化。 我如何实现这样的事情?

编辑:我怎么也比较远程目录与本地?

从差异手册页:

如果源文件和目标文件都是目录,则diff按字母顺序比较两个目录中的相应文件; 除非给出-r或–recursive选项,否则此比较不是recursion的。 diff不会将目录的实际内容与文件进行比较。 完全指定的文件可能不是标准input,因为标准input是无名的,“'具有相同名称的文件'的概念不适用。

所以比较目录: diff --brief -r dir1 dir2

并排比较文件: diff --side-by-side file1 file2

假设:

  • 我们在www1 ,比较远程www2
  • 从本地www1到远程www2有公钥authentication
  • 我们比较为本地www1和远程www2上的相同用户
 find / var / www / html / -name“*”-exec md5sum -b {} \;  |  grep -v“/ var / www / html / exclude_this dir”> local.md5
 ssh www2“find / var / www / html / -name'*'-exec md5sum -b {} \ | | grep -v / var / www / html / exclude_this dir> remote.md5”
 scp www2:remote.md5。
 diff local.md5 remote.md5 

你真的想要结合rsync的强大function来减less带宽消耗与diff的力量,给你灵活,很好的差异。

所以像这样的东西:

 cp -R $local $bak rsync $server:$remdir/* $local/ rsync $local/ $server:$remdir/* diff -wur $local $bak 

我想你可以调整这一点,如果你这样做经常使用rsync而不是cp在第一行 – 显然在最后一行,你有完全的diff力量来格式化,但是你喜欢。 可能在OP的情况下是y

这种方法的缺点是你最终使用了两倍的本地空间,但低于$ 1 / gig谁在乎?

在同一台服务器上执行diff old_dir new_dir > diff.txt并排的区别。

对于远程文件:

例如:ABC是现有的服务器,XYZ是您的远程服务器,目录名称是123。

步骤1:将ABC服务器上的现有目录123重命名为123_ABC。

 ABC:/Home > mv 123 123_ABC 

步骤2:在服务器ABC上创build一个新目录:

 ABC: > mkdir 123_XYZ 

步骤3:将所有文件从XYZ服务器上的目录123复制到ABC服务器上的123_XYZ目录:

 XYZ/123 > scp * userid@ABC: /123_XYZ 

这将从XYZ服务器上的目录复制所有文件到您的ABC服务器/ 123_XYZ目录。

步骤:4:在两个目录之间做差异:

现在转到ABC服务器,执行123_ABC和123_XYZ之间的差异

 ABC > diff 123_ABC 123_XYZ > diff.txt 

上面的命令会将diff结果保存到diff.txt中相同的path中。

那么你可以比较差异。

谢谢,

MEHUL

AIDE高级入侵检测环境(AIDE)是UNIX操作系统的文件完整性检查程序。 其目的是提供关于支持文件系统上数据完整性的报告。 通过在目标主机上多次运行AIDE,您可以确定哪些文件正在更改。 通过在不同的主机上多次运行AIDE,您可以确定哪些文件和权限是不同的。 然后在报告的“不同”文件上使用gui diff工具。

或者使用guld diff工具,比如meld,guiffy,kdiff3,diff,vimdiff,gvimdiff,Emacs,Kompare,Diffuse,Easydiff,TkDiff或者xxdiff。 除文件差异之外,大多数会做目录差异。 您需要使用NFS,SMBFS或SSHFS挂载远程驱动器,如其他人所述。

或者你可以使用两个文件与输出的文件列表。 然后比较这两个文件。 例如:

 /path/to/compare/remote$: ls > remote-files /path/to/compare/local$: ls > local-files 

下载其中一个文件。

 -rw-r  -  r-- 1 1015 1015 26624 2005-06-14 13:10 FILE.TXT  

到FILE.TXT

使用diff( diff -y remote-files local-files > diff-files )将它们并排比较。 打开diff文件并检查它。 每行与>意味着一个不同的文件。