du -sb 对两个具有相同内容的目录给出不同的结果?

du -sb 对两个具有相同内容的目录给出不同的结果?

我有一个目录 A,里面有 1000 个子目录 (000-999),每个子目录包含 3500 个 .jpg 文件。我编写了一个 PHP 脚本,将每个文件复制到另一个目录 B,目录 B 的结构完全相同,即 1000 个子目录,每个子目录包含 3500 个 .jpg 文件,但有以下不同:

  1. .jpg 文件已重命名为新名称
  2. 虽然子目录没有重命名,但它们现在包含的文件与目录 A 中的文件不同

该脚本运行了大约 20 个小时,最后完成后我运行了:

du -sb *

在其父目录中获取 A 和 B 的视在大小。有趣的是,出现了以下结果:

74778240380   A
74809644412   B

然后,我在 B 中运行了另一个 PHP 脚本,结果发现它具有与 A 完全相同的文件数量。现在我很茫然。

为什么 du -sb 结果不同?还有其他方法可以验证复制过程是否成功以及 B 是否是 A 的完美复制品吗?

答案1

您说您复制了带有新名称的 JPEG 文件。如果新名称比旧名称长得多,那么新目录(“B”的子目录)将比旧目录(“A”的子目录)大。(是的,目录占用空间,并du计算该空间。)您的大小增量(74809644412 – 74778240380)为 31404032,约为 1000 × 31404。这与 1000 个子目录中的每一个都大 31404 字节(平均)一致。如果 3500 个 JPEG 文件中的每一个的名称都长 9 个字符(平均),那就可以了。

答案2

使用 diff 命令:

diff -qr A B

来自手册页 -qr给出

   -q     Report  only  whether  the  files differ, not the details of the
      differences.

   -r     When comparing directories, recursively compare any  subdirecto-
      ries found.

相关内容