Boris Kalinin Asked: 2022-01-11 03:24:34 +0800 CST2022-01-11 03:24:34 +0800 CST 2022-01-11 03:24:34 +0800 CST 为什么 tar 存档比文本文件大得多,10240 字节? 772 我已经检查了这两个问题(问题一,问题二),但它们对我理解没有帮助。我有一个file.txt包含 40 行Hello World!字符串的文件。ls -l显示其大小为 520 字节。现在我将这个文件存档tar -cvf file.tar file.txt,当我ls -l再次存档时,我看到它file.tar是 10240 字节。为什么? 我已经阅读了一些手册,并且了解归档和压缩是不同的事情。但是有人可以解释一下它是如何工作的吗? tar 2 个回答 Voted Best Answer Stephen Kitt 2022-01-11T03:29:56+08:002022-01-11T03:29:56+08:00 tar默认情况下,档案的最小大小为 10240 字节;有关详细信息,请参阅GNUtar手册(但这不是 GNU 特定的)。 使用 GNU tar,您可以通过指定不同的块大小或不同的块因子或两者来减少这种情况: tar -cv -b 1 -f file.tar file.txt 结果仍然会大于file.txt,因为除了自身之外还file.tar存储了关于的元数据。在大多数情况下,您会看到文件元数据(名称、大小、时间戳、所有权、权限)的一个块,然后是文件内容,然后是归档结束条目的两个块,因此包含非零长度文件大小为四个块(2,048 字节,512 字节块)。file.txtfile.txt d.c. 2022-01-11T03:41:11+08:002022-01-11T03:41:11+08:00 tar除了简单地存储文件之外,还需要做三件事: 存储元数据(文件名、模式、所有者、组、日期...) 标记文件的结尾。 标记存档的结尾。 tar意思是“磁带存档”。对于磁带,重要的是要确定文件的结尾在哪里,即使在搜索时设备也需要知道它(磁带移动得更快)。因此 tar 为了方便磁带,在每个文件的末尾添加了一些零,并在存档的末尾添加了另一组 seroes。您指出的第二个问题确实解释了这一点。 您可以使用 . 查看存档中的内容hexdump -C archive.tar |less。
tar
默认情况下,档案的最小大小为 10240 字节;有关详细信息,请参阅GNUtar
手册(但这不是 GNU 特定的)。使用 GNU
tar
,您可以通过指定不同的块大小或不同的块因子或两者来减少这种情况:结果仍然会大于
file.txt
,因为除了自身之外还file.tar
存储了关于的元数据。在大多数情况下,您会看到文件元数据(名称、大小、时间戳、所有权、权限)的一个块,然后是文件内容,然后是归档结束条目的两个块,因此包含非零长度文件大小为四个块(2,048 字节,512 字节块)。file.txt
file.txt
tar
除了简单地存储文件之外,还需要做三件事:tar
意思是“磁带存档”。对于磁带,重要的是要确定文件的结尾在哪里,即使在搜索时设备也需要知道它(磁带移动得更快)。因此 tar 为了方便磁带,在每个文件的末尾添加了一些零,并在存档的末尾添加了另一组 seroes。您指出的第二个问题确实解释了这一点。您可以使用 . 查看存档中的内容
hexdump -C archive.tar |less
。