我有两个目录 - 一个来自早期备份,另一个来自最新备份。如何比较 Linux 上最新备份目录中文件的更改?此外,如何显示文本和 php 文件中的更改 - 我正在考虑类似 wikipedia 上的修订历史记录,您可以在屏幕一侧看到旧版本,在另一侧看到最新版本,并且更改会突出显示。我该如何实现这样的功能?
编辑:我该如何比较偏僻的目录与本地?
答案1
来自 diff 手册页:
如果源文件和目标文件都是目录,则 diff 将按字母顺序比较两个目录中的相应文件;除非给出了 -r 或 --recursive 选项,否则此比较不是递归的。diff 永远不会将目录的实际内容当成文件进行比较。完全指定的文件可能不是标准输入,因为标准输入没有名称,并且不适用“同名文件”的概念。
比较目录:diff --brief -r dir1 dir2
要并排比较文件:diff --side-by-side file1 file2
答案2
您确实希望将减少带宽消耗的功能与为您提供灵活性rsync
的功能结合起来。diff
像这样:
cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/*
diff -wur $local $bak
我想如果你经常这样做,你可以稍微调整一下,在第一行使用rsync
而不是cp
—— 显然在最后一行,你可以完全按照diff
你喜欢的方式格式化它。在 OP 的案例中,可能使用 y
这种方法的缺点是你最终会使用两倍的本地空间,但成本不到 1 美元/G,谁在乎呢?
答案3
假设:
- 我们正在进行
www1
,与远程比较www2
- 配置了从本地
www1
到远程的公共 ssh 密钥认证www2
- 我们比较本地
www1
和远程的同一用户www2
查找 /var/www/html/-name“*”-exec md5sum -b {} \; | grep -v“/var/www/html/exclude_this dir”> local.md5 ssh www2 “查找 /var/www/html/ -name '*' -exec md5sum -b {} \; | grep -v /var/www/html/exclude_this dir > remote.md5” scp www2:remote.md5。 差异 本地.md5 远程.md5
答案4
助手高级入侵检测环境 (AIDE) 是 UNIX 操作系统的文件完整性检查器。其目的是提供有关受支持文件系统上数据完整性的报告。通过在目标主机上多次运行 AIDE,您可以确定哪些文件正在更改。通过在不同的主机上多次运行 AIDE,您可以确定哪些文件和权限不同。然后对报告的“不同”文件使用 gui diff 工具。
或者使用 gui 差异工具,如 meld、guiffy、kdiff3、diff、vimdiff、gvimdiff、Emacs、Kompare、Diffuse、Easydiff、TkDiff 或 xxdiff。大多数工具除了文件差异外,还会执行目录差异。您需要使用 NFS、SMBFS 或 SSHFS 安装远程驱动器,正如其他人提到的那样。