我已经检查了这两个问题(问题一,问题二),但它们对我理解没有帮助。我有一个file.txt
包含 40 行字符串的文件Hello World!
。ls -l
显示其大小为 520 字节。现在我将这个文件归档tar -cvf file.tar file.txt
,当我ls -l
再次归档时,我看到它file.tar
是 10240 字节。为什么?
我读过一些手册并了解到归档和压缩是不同的事情。但有人可以解释一下它是如何工作的吗?
Ste*_*itt 65
tar
默认情况下,存档的最小大小为 10240 字节;有关详细信息,请参阅GNUtar
手册(但这不是 GNU 特定的)。
使用 GNU tar
,您可以通过指定不同的块大小或不同的块因子或两者来减少此问题:
tar -cv -b 1 -f file.tar file.txt\n
Run Code Online (Sandbox Code Playgroud)\n结果仍然会大于file.txt
,因为除了file.tar
存储元数据file.txt
之外file.txt
。在大多数情况下,您\xe2\x80\x99将看到文件\xe2\x80\x99元数据(名称、大小、时间戳、所有权、权限)的一个块,然后是文件内容,然后是存档末尾的两个块条目,因此包含非零长度文件的最小存档大小为四个块(2,048 字节,其中一个块为 512 字节)。
d.c*_*.c. 29
tar
除了简单地存储文件之外,还需要做三件事:
tar
意思是“磁带档案”。对于磁带来说,确定文件结尾在哪里很重要,并且即使在搜索时设备也需要知道它(磁带移动速度更快)。因此,为了磁带方便, tar 在每个文件的末尾添加了一些零,并在存档的末尾添加了另一组血清。您指出的第二个问题确实解释了这一点。
您可以使用查看存档中的内容hexdump -C archive.tar |less
。