7z压缩器和lzma压缩器有什么区别?

15
7-Zip声称使用LZMA作为压缩算法。然而,LZMA SDK附带两个可执行文件,7zr.exe和lzma.exe,它们具有不同的选项/开关,并产生不可互换的不同结果,尽管它们大小相近。因此问题是:这两个处理器之间有什么区别?
1个回答

22

我在7-Zip论坛的SourceForge上直接收到了Igor Pavlov对类似问题的回复,因此我认为如果我在这里复制回复,它可能对其他人有用。

1).lzma文件格式使用简单的头文件,仅支持LZMA方法,并且仅支持每个存档中的一个文件。它不存储文件名。

2).7z文件格式使用复杂的头文件,支持不同的方法(包括LZMA),并且支持大量文件存档。

  • lzma.exe仅适用于.lzma文件
  • 7zr.exe支持.7z文件和.lzma文件。

lzma.exe和7z.exe对于LZMA使用不同的默认设置(字典大小等)。因此,您会看到压缩比的差异。如果您为LZMA设置相同的设置,则差异将较小。

Igor Pavlov在Sourceforge论坛


1
有趣的是你提到了lzma只能压缩一个文件,也许有时候lzma被用来压缩tar文件(因为与tarball不同,tar是一堆未压缩的文件放在一个文件中)。http://packages.openknapsack.org/openssl/openssl-1.0.0k-x86-windows.tar.lzma - barlop
2
@barlop 我认为你可能混淆了一些术语。 "tar" 是生成“tarballs”的软件,它们是包含多个其他文件的单个文件,并通常带有“.tar”扩展名。这就是为什么你链接的文件使用lzma进行压缩,因为它是一个单独的文件。您可以在此处检查:https://en.wikipedia.org/wiki/Tar_(computing) - Carles Sala
啊,谢谢。我对tarball这个术语感到困惑...以及.tartar.gz.tar是存档但未压缩的文件...而tarball是指.tar*,即任何.tar文件,无论是否压缩。 - barlop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接