1.6 总结哪些文件不同

1.6 总结哪些文件不同

diff -r

diff我可以完成这项任务,但是由于检查文件的内容而需要很长时间。

我想要一些东西来确定两个文件在大小、上次修改等方面是相同的。但没有一点一点地检查文件(例如视频需要很长时间)。

还有其他办法吗?

答案1

rsync 默认情况下仅比较元数据。

rsync -n -a -i --delete source/ target/

解释:

  • -n比较但实际上不复制或删除<-- 这很重要!!1
  • -a比较所有元数据
  • -i每个文件打印一行信息
  • --delete还报告目标中但不在源中的文件

注意:在目录名称后附加斜杠非常重要。这是一个 rsync 的东西。

另请注意:rsync 是一个强大的工具。针对这个问题的上下文,上面的一些解释被粗略地简化了。尤其-a是比“所有元数据”复杂得多。

你可以像这样缩短一个字母选项

rsync -nai --delete source/ target/

您可以提供-i两次,以便为相同的文件打印信息

rsync -naii --delete source/ target/

示例输出:

.d..t...... ./            (directory with different timestamp)
>f.st...... modifiedfile  (file with different size and timestamp)
>f+++++++++ newfile       (file in source but not in target)
*deleting   removedfile   (file in target but not in source)
.f          samefile      (file that has same metadata. only with -ii)

请记住,rsync 仅比较元数据。这意味着如果文件内容发生更改但元数据仍然相同,则 rsync 将报告该文件相同。这是不太可能出现的情况。通常,如果数据发生变化,元数据也会发生变化。因此,要么相信当元数据相同时数据就相同,要么您必须逐位比较文件数据。

奖励:有关进度信息,请参见此处:估计完成 rsync 所需的时间或工作量?

答案2

我刚刚发现tree

tree old_dir/ > tree_old
tree new_dir/ > tree_new
vimdiff tree_old tree_new

答案3

-q将( --brief) 选项与diff -r( ) 一起使用diff -qr。从infoGNU 页面diff

1.6 总结哪些文件不同

当你只想找出文件是否不同,而不关心差异是什么时,可以使用摘要输出格式。在此格式中, diff' simply reports whether files differ. The--brief' (`-q') 选项选择此输出格式,而不是显示文件之间的差异。

当比较两个目录的内容时,这种格式特别有用。它也比正常的逐行比较快得多,因为“diff”一旦知道存在任何差异就可以停止分析文件。

这不会逐行比较,而是将文件作为一个整体进行比较,这大大加快了处理器的速度(您正在寻找的内容)。

答案4

如果您只需要知道两个文件系统分支中的文件是否不同(不查看文件内部),您可以执行以下操作:

find /opt/branch1 -type f | sort | xargs -i md5sum {} >/tmp/branch1;
find /opt/branch2 -type f | sort | xargs -i md5sum {} >/tmp/branch2;
diff /tmp/branch1 /tmp/branch2;

华泰

相关内容