【问题标题】:Why does tar archive take up 1MB? Shouldn't it take up only 1KB?为什么 tar 归档占用 1MB?它不应该只占用1KB吗?
【发布时间】:2019-03-12 22:50:28
【问题描述】:

我正在阅读一篇关于difference between tar and zip and gz files 的文章。

我很难理解作者是如何提出 1MB 作为 tar 存档大小的:

要记住的重要一点是,纯 tar 文件只是数据未压缩的存档。换句话说,如果你 tar 100 个 50kB 的文件,你最终会得到一个大小约为 5000kB 的档案。您可以期望单独使用 tar 的唯一好处是避免文件系统浪费空间,因为它们中的大多数以某种粒度分配空间(例如,在我的系统上,一个字节长的文件使用 4kB 的磁盘空间,1000他们将使用 4MB,但相应的 tar 存档“仅”1MB)。

存档的大小不应该只占用 1KB 左右吗?这是我的推理:

如果你节省了文件系统节省的额外空间,那么 1000 个文件 X 每个文件 1 字节应该只消耗 1000 字节或 1 KB。所以 tar 存档的大小应该在 1KB 左右。为什么是1MB。

我也在我的系统(MACOSX 终端)上测试过这样的场景:

mkdir test
cd test
for i in {1..1000}; do echo "" > $i.txt; done
cd ..
tar -cf tarredFile.tar test
ls -l tarredFile.tar

即使文件系统显示 1MB 用于 tar 存档。总之,我绝对知道我的推理是不正确的,但我不知道为什么。我忽略了什么?

【问题讨论】:

    标签: compression tar


    【解决方案1】:

    tar 格式以 512 字节块的形式写入。每个 1 字节文件占用 512 字节作为包含文件名的标题,以及 512 字节作为文件内容,其中只有一个字节是重要的。所以每个文件最少 1024 字节。

    其中大部分是零,所以它压缩了很多。 gzip 使它达到大约 9K。请注意,这距离 1K 还很远,因为您还需要在存档中存储文件的名称

    【讨论】:

    • 啊,这很有道理。我假设需要一些空间来存储文件名和创建日期等元数据,但不能完全证明 1MB 的存档大小是合理的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    相关资源
    最近更新 更多