为什么使用cp命令复制的目录的大小小于原始目录

问题描述 投票:-1回答:1

我想将一个包含大量文件的目录复制到另一个目的地。我做到了

cp -r src_dir another_destination/

然后我想确认目标目录的大小与原始目录的大小相同:

du -s src_dir
3782288 src_dir

du -s another_destination/src_dir
3502320 another_destination/src_dir

然后我想到可能有几个符号链接没有跟随cp命令并添加了-a标志:

-a与-pPR选项相同。保留文件的结构和属性,但不保留目录结构。

cp -a src_dir another_destination/

du -s给了我相同的结果。有趣的是,源和目标都具有相同数量的文件和目录:

tree src_dir | wc -l
    4293

tree another_destination/src_dir | wc -l
    4293

我用du命令获得不同大小的错误是什么?

command-line cp du
1个回答
1
投票

这可能有很多原因,因为您要求使用的磁盘大小,而不是两个树中存储的字节数。

  • 在文件系统中,文件以特定的开销存储。此开销取决于文件系统。也许这两个存储使用的是不同的文件系统效率不同(例如,使用不同的块大小可能是由于磁盘大小不同)。
  • 另一个原因可能是原始文件中的硬链接文件。该副本可能已经多次复制了硬链接文件,因此在副本中它们不再被硬链接。
  • 第三个原因可能是包含大块零字节的稀疏文件,在某些文件系统中,通过为它们分配没有块可以有效地存储它们。

为了排除至少第一个原因(最可能的原因),我建议在两棵树上使用du -bs

© www.soinside.com 2019 - 2024. All rights reserved.