AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 59108
Accepted
Phil
Phil
Asked: 2009-08-27 08:17:27 +0800 CST2009-08-27 08:17:27 +0800 CST 2009-08-27 08:17:27 +0800 CST

如何比较目录之间的差异(linux)

  • 772

我有两个目录 - 一个来自早期备份,第二个来自最新备份。如何比较 Linux 上最新备份对目录中文件所做的更改?另外,我如何显示例如文本和 php 文件中的更改-我正在考虑诸如维基百科上的修订历史之类的东西,您可以在屏幕的一侧看到旧版本,而在另一侧看到最新版本,并且突出显示了更改。我如何实现这样的目标?

编辑:我如何将远程目录与本地目录进行比较?

linux
  • 6 6 个回答
  • 56492 Views

6 个回答

  • Voted
  1. Best Answer
    Sean Staats
    2009-08-27T08:27:14+08:002009-08-27T08:27:14+08:00

    从差异手册页:

    如果from-file和to-file都是目录,diff比较两个目录中对应的文件,按字母顺序排列;除非给出 -r 或 --recursive 选项,否则这种比较不是递归的。diff 从不比较目录的实际内容,就好像它是一个文件一样。完全指定的文件可能不是标准输入,因为标准输入是无名的,并且“同名文件”的概念不适用。

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

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

    • 40
  2. user69366
    2011-02-04T07:56:03+08:002011-02-04T07:56:03+08:00

    假设:

    • 我们在www1,与远程比较www2
    • 配置了从本地www1到远程的公共 ssh 密钥身份验证www2
    • www1我们在本地和远程上作为同一用户进行比较www2
    查找 /var/www/html/ -name "*" -exec md5sum -b {} \; | grep -v "/var/www/html/exclude_this 目录" > 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 远程.md5
    
    • 3
  3. ErichBSchulz
    2012-09-09T13:21:14+08:002012-09-09T13:21:14+08:00

    您真的想将rsync减少带宽消耗的功能与diff为您提供灵活、嗯差异的功能相结合。

    所以是这样的:

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

    rsync我想如果您经常使用它而不是在第一行中使用它,您可以稍微调整一下cp- 显然在最后一行中您可以根据自己的diff喜好进行格式化。在 OPs 案例中可能有 y

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

    • 3
  4. mehul
    2013-12-24T09:42:21+08:002013-12-24T09:42:21+08:00

    在同一台服务器上做diff old_dir new_dir > diff.txt并排差异。

    对于远程文件:

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

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

    ABC:/Home > mv 123 123_ABC
    

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

    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.txt 中。

    然后你可以比较差异。

    谢谢,

    梅胡尔

    • 1
  5. joe
    2009-08-29T23:24:31+08:002009-08-29T23:24:31+08:00

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

    或者使用 gui diff 工具,如 meld、guiffy、kdiff3、diff、vimdiff、gvimdiff、Emacs、Kompare、Diffuse、Easydiff、TkDiff 或 xxdiff。除了文件差异之外,大多数人还会做目录差异。正如其他人所提到的,您需要使用 NFS、SMBFS 或 SSHFS 安装远程驱动器。

    • 0
  6. 2010-04-08T13:11:50+08:002010-04-08T13:11:50+08:00

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

    /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  
    

    文件.TXT

    使用 diff ( diff -y remote-files local-files > diff-files) 并排比较它们。打开差异文件并检查它。带有 > 的每一行表示一个不同的文件。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve