【发布时间】:2021-10-15 13:50:39
【问题描述】:
在 Unix 上使用 tar 和在 Python 中使用 tarfile 对文件夹进行 tar 压缩导致文件大小不同的根本区别是什么?
在下面的示例中,有 8.2 MB 的差异。我目前正在使用 Mac。此示例中的文件夹包含一堆用于测试目的的随机文本文件。
tar -cvf archive_unix.tar files/
python -m tarfile -c archive_pycli.tar files/ # using Python 3.9.6
-rw-r--r-- 1 userid staff 24606720 Oct 15 09:40 archive_pycli.tar
-rw-r--r-- 1 userid staff 16397824 Oct 15 09:39 archive_unix.tar
【问题讨论】:
-
第一步是在两个存档上运行
tar -tvf,看看它们的内容之间可能存在什么差异。 -
我已经这样做了,两者都是一样的。我创建了两个包含每个文件内容的文件,然后比较了这些内容。存在相同数量的文件并且所有文件大小都相同。
-
想到的一种可能性是您正在处理 sparse files - 具有足够长的空字节运行的文件,可以从其存储中省略整个磁盘块.一些
tar实现保持稀疏性,有些则没有。但是,这与您将这些描述为“随机文本文件”不兼容,因为文本文件根本不应该包含空字节。