当我创建tar
目录及其所有内容的存档时,存档的大小大于所有原始文件的总大小。
为什么会这样呢?
我正在使用 来检查文件大小ls -l
。
我正在使用创建存档tar -cvf archive directory
。
答案1
tar
记录有关存档中存储的文件的名称和其他元数据 - 仅此信息就需要每个文件的存储字节数。
tar 文件内也可能存在大量空白空间,可能是由于阻塞造成的。在几次狭窄的测试中,我存储了一个零字节的文件,并获得了一个 2560 字节的 tar 文件; 1000 个零字节文件生成约 1.5MB 的存档。
tar
当您在没有压缩标志(例如)的情况下使用时,z
除了较大的文件之外,您不会获得任何其他内容。
答案2
1977 年的历史TAR
记录了每个文件 512 字节的元数据。
如果您归档大小为 500 字节的文件,则与纯文件内容相比,归档中所需的空间会增加一倍以上。
如果将此与文件系统中文件的开销进行比较,这通常仍然小于文件系统所需的文件整体空间。
顺便说一句:1997 年,Solaris 引入了一种新的增强型TAR
归档格式。此格式已通过 POSIX.1-2001 标准化。它被称为pax
或tar with extended headers
。
这tar with extended headers
支持以任意分辨率归档时间戳和任意长度的文件名。具有扩展标头的存档TAR
每个文件至少需要 1536 字节的开销。这仍然不超过典型文件系统的开销,因为文件系统需要 inode 信息、目录条目、ACL 和其他增强的元数据,并且在将文件内容存储在列表中时通常将文件大小舍入为 1..8 kBytes文件系统后台存储的块数。