我有一个目录 A,里面有 1000 个子目录 (000-999),每个子目录包含 3500 个 .jpg 文件。我编写了一个 PHP 脚本,将每个文件复制到另一个目录 B,目录 B 的结构完全相同,即 1000 个子目录,每个子目录包含 3500 个 .jpg 文件,但有以下不同:
- .jpg 文件已重命名为新名称
- 虽然子目录没有重命名,但它们现在包含的文件与目录 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.