为什么用 cp 命令复制的目录比原来的小
Why directory copied with cp command has less size than the original one
我想将一个包含大量文件的目录复制到另一个目的地。我做到了
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 Same as -pPR options. Preserves structure and attributes of files but not directory structure.
cp -a src_dir another_destination/
但 du -s
给了我相同的结果。有趣的是,源和目标都有相同数量的文件和目录:
tree src_dir | wc -l
4293
tree another_destination/src_dir | wc -l
4293
我在使用 du
命令得到不同尺寸时做错了什么?
这可能有多种原因,因为您询问的是已用磁盘大小,而不是两棵树中存储的字节数。
- 在文件系统中,文件以特定的开销存储。此开销取决于文件系统。也许这两个存储使用不同的文件系统,这些文件系统效率不一样(例如使用不同的块大小,这可能是由于不同的磁盘大小)。
- 另一个原因可能是原始文件中的硬链接文件。该副本可能已多次复制硬链接文件,因此在副本中它们不再是硬链接。
- 第三个原因可能是包含大面积零字节的稀疏文件,在某些文件系统中可以通过不分配块来有效地存储这些文件。
为了至少排除第一个原因(最有可能的一个),我建议在两棵树上都使用 du -bs
。
我想将一个包含大量文件的目录复制到另一个目的地。我做到了
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 Same as -pPR options. Preserves structure and attributes of files but not directory structure.
cp -a src_dir another_destination/
但 du -s
给了我相同的结果。有趣的是,源和目标都有相同数量的文件和目录:
tree src_dir | wc -l
4293
tree another_destination/src_dir | wc -l
4293
我在使用 du
命令得到不同尺寸时做错了什么?
这可能有多种原因,因为您询问的是已用磁盘大小,而不是两棵树中存储的字节数。
- 在文件系统中,文件以特定的开销存储。此开销取决于文件系统。也许这两个存储使用不同的文件系统,这些文件系统效率不一样(例如使用不同的块大小,这可能是由于不同的磁盘大小)。
- 另一个原因可能是原始文件中的硬链接文件。该副本可能已多次复制硬链接文件,因此在副本中它们不再是硬链接。
- 第三个原因可能是包含大面积零字节的稀疏文件,在某些文件系统中可以通过不分配块来有效地存储这些文件。
为了至少排除第一个原因(最有可能的一个),我建议在两棵树上都使用 du -bs
。