tar (Unix) 和 tarfile (Python) 之间的根本区别是什么?
What is the fundamental difference between tar (Unix) and tarfile (Python)?
在 Unix 上使用 tar
和 Python 中的 tarfile
压缩文件夹导致文件大小不同的根本区别是什么?
在下面的示例中,存在 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
有趣的问题。 tarfile
的文档
(https://docs.python.org/3/library/tarfile.html) 提到
tarfile
创建的 tar 存档的默认格式是,因为 python
3.8, PAX_FORMAT
而由 tar
命令创建的档案有
我认为 GNU 格式解释了差异。
现在生成与 tar
命令相同的存档文件
默认格式(正如您的命令所做的那样):
import tarfile
with tarfile.TarFile(name='archive-py-gnu.tar', mode='w', format=tarfile.GNU_FORMAT) as tf:
tf.add('tmp')
with tarfile.TarFile(name='archive-py-default.tar', mode='w') as tf:
tf.add('tmp')
比较:
$ tar cf archive-tar.tar tmp/
$ ls -l
3430400 16:28 archive-py-default.tar
3317760 16:28 archive-py-gnu.tar
3317760 16:27 archive-tar.tar
file
命令的结果:
$ file archive_unix.tar
archive_unix.tar: POSIX tar archive (GNU)
$ file archive-py-gnu.tar
archive-py-gnu.tar: POSIX tar archive (GNU)
$ file archive-py-default.tar
archive-py-default.tar: POSIX tar archive
现在我不能告诉你不同格式之间的区别,
对不起。但我希望这会有所帮助。
在 Unix 上使用 tar
和 Python 中的 tarfile
压缩文件夹导致文件大小不同的根本区别是什么?
在下面的示例中,存在 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
有趣的问题。 tarfile
的文档
(https://docs.python.org/3/library/tarfile.html) 提到
tarfile
创建的 tar 存档的默认格式是,因为 python
3.8, PAX_FORMAT
而由 tar
命令创建的档案有
我认为 GNU 格式解释了差异。
现在生成与 tar
命令相同的存档文件
默认格式(正如您的命令所做的那样):
import tarfile
with tarfile.TarFile(name='archive-py-gnu.tar', mode='w', format=tarfile.GNU_FORMAT) as tf:
tf.add('tmp')
with tarfile.TarFile(name='archive-py-default.tar', mode='w') as tf:
tf.add('tmp')
比较:
$ tar cf archive-tar.tar tmp/
$ ls -l
3430400 16:28 archive-py-default.tar
3317760 16:28 archive-py-gnu.tar
3317760 16:27 archive-tar.tar
file
命令的结果:
$ file archive_unix.tar
archive_unix.tar: POSIX tar archive (GNU)
$ file archive-py-gnu.tar
archive-py-gnu.tar: POSIX tar archive (GNU)
$ file archive-py-default.tar
archive-py-default.tar: POSIX tar archive
现在我不能告诉你不同格式之间的区别, 对不起。但我希望这会有所帮助。