制作 7zip 文件时要使用哪些设置以获得最大压缩率?我正在压缩包含扫描图像的 PDF 文档。我正在考虑使用 LZMA2,但我不知道在字典大小、字大小等中设置什么。另外,LZMA 或 PPMd 会是更好的选择吗?
我需要通过网络传输一些文件(~200MiB),这里的上传速度非常慢,所以我想尽可能地压缩数据。消耗的 CPU 时间不是很重要。
编辑
这是我在测试各种压缩方法后得到的结果:
未压缩大小为:25,462,686B
我的处理器是 Intel Core 2 Due T8100,我有 4GiB 的内存。
最好的压缩是使用 PeaZip 使用 PAQ8O 算法。结果文件大小为 19,994,325B。使用的设置是压缩级别:最大。不幸的是,压缩速度大约为 5KiB/s,因此压缩数据需要 1 个小时以上。
接下来是实验性的 PAQ9O 压缩机。使用它,我在大约 3 分钟的压缩中得到了 20,132,660B。不幸的是,程序只是命令行,没有多少其他程序使用这种压缩算法。它还使用大约 1.5GiB 的 RAM 和我使用的设置(a -9 -c)
之后是使用 LZMA2 的 7-Zip 9.15 beta (2010-06-20)。使用它,我在大约 3 分钟内得到了 20,518,802B。使用的设置是字大小 273,字典大小 64MB,我使用 2 个线程进行压缩。
现在回到我最初的问题:在我的情况下,实体块大小没有产生任何明显的结果。增加字数确实产生了一些结果。最大字长和最小字长之间的差异是 115,260B。我相信这样的节省确实证明了进行两次必要的点击和更改字号所需的努力是合理的。
我尝试使用 7zip 和 PeaZip 支持的其他压缩算法,它们生成的文件大小从 19.8MiB 到 21.5MiB。
最后,我的结论是,在压缩主要包含图像的 PDF 文档时,使用奇异压缩算法所需的努力是不合理的。在 7zip 中使用 LZMA2 压缩在最短的时间内产生了相当可接受的结果。
我正在尝试获取 7zip SFX 存档以创建可执行文件。我能够获得可执行文件。但是当我运行它时,它给出了Extract to:. 我想改为%AppData%\Roaming默认。下面的屏幕截图将给出我正在尝试做的事情的想法。
setup.exe存档中没有或没有任何内容,它只有几个需要转到Roaming文件夹的文件。这适用于我们的许多用户,他们无需指定路径即可获得此更新。(当用户不必指定路径时总是很容易的,否则,我的经验是用户可以选择最不寻常的路径!!)
更新
这是我迄今为止尝试过的。我的配置文件内容是
;!@Install@!UTF-8!
InstallPath="%AppData%\\Roaming\\Notepad++"
;!@InstallEnd@!
Run Code Online (Sandbox Code Playgroud)
这是命令行调用。
copy /b 7zS.sfx + config.txt + Installer.7z myinstaller.exe
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用。它给出了以下路径。应该是%AppData%\\Roaming\\Notepad++。
![![提取路径]](https://i.stack.imgur.com/UGXKF.png)
我正在尝试编写一个批处理脚本以将文件从现有ZIP文件中提取到我桌面上的另一个文件夹中,并使系统不提示我是否要覆盖现有文件。该脚本仅适用于-o,但是一旦我添加了 -aoa,就会出现错误:
"C:\Program Files\7-zip\7z.exe" e file1.zip "-aoaC:\Documents and Settings\All Users\Desktop\all_backup_files"
Run Code Online (Sandbox Code Playgroud) 我需要使用 AES-256 加密使用 7zip 压缩 Linux 中的一些文件。最终用户将使用 7zip 在 Windows 中打开。我正在使用以下命令:
7za a myfile.zip test.txt -tzip -mem=AES256 -mx9
Run Code Online (Sandbox Code Playgroud)
问题是当我在 Windows 中打开 zip 存档时,方法显示“Deflate”并且没有说明任何关于 AES-256 的内容。

我(更重要的是最终用户)如何确定它使用 AES-256 作为加密方法?
Linux 7za 版本:
me@myhost~> 7za -version
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)
Run Code Online (Sandbox Code Playgroud)
Linux 主机是 SLES 11 SP2,对于 Windows,我使用的是 Windows 7。
我正在寻找一种方法来搜索7-Zip存档 (.7z)内的文件内容,而无需解压存档。我有很多 7-Zip 档案,里面有代码,我想搜索它们。
有没有办法做到这一点?
如何在命令行上使用 7-zip 9.20 启用多线程 LZMA2?我知道这通常是使用 -t 选项完成的,如下所示: "-tzip" 。
我如何用 LZMA2 做到这一点?我试过 -tlzma 和 -tlzma2 都没有效果。我也试过根本不通过 -t,它只是以“lzma”模式运行单线程。
这是我目前拥有的命令,但它很慢,而且是单线程的:
"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y XMLBackup.zip *.xml
Run Code Online (Sandbox Code Playgroud) 我安装了 7-Zip,它没有改变默认的文件关联。我已经更改了 .rar 和 .7z 的关联,但我找不到更改 .zip 的方法。
我查看了默认程序\设置关联,并搜索了 .zip,但它不在那里。说真的,它来自 .z、.z96、.zoo。它似乎跳过.zip。我怎样才能解决这个问题?如果需要,我可以进行注册表编辑。
我有一个 7z 存档文件,它在“根”级别包含几个文件和一个目录,该目录又包含文件和文件夹,如下所示:
- file1.txt
- file2.txt
- my_dir
- file3.txt
- file4.txt
- another_dir
- file5.txt
- file6.txt
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个命令允许我提取我选择的目录中的内容,my_dir以便最终结果是:
- target_dir
- file3.txt
- file4.txt
- another_dir
- file5.txt
- file6.txt
Run Code Online (Sandbox Code Playgroud)
我试过这些命令:
7za x -y archive.7z -o/path/to/target_dir my_dir
7za x -y archive.7z -o/path/to/target_dir 'my_dir/*'
Run Code Online (Sandbox Code Playgroud)
但两者都创建了这个目录结构:
- target_dir
- my_dir
- file3.txt
- file4.txt
- another_dir
- file5.txt
- file6.txt
Run Code Online (Sandbox Code Playgroud) 如果我有一个 100 GB 的文件夹并拆分 ZIP,如果我将其拆分为 100 个 .ZIP 文件(每个 1 GB)或 10 个 .ZIP 文件(每个 10 GB),消耗的磁盘空间是否有区别?
100 个 1 GB 的 .ZIP 文件是否比 10 个 10 GB 的 .ZIP 文件占用更多空间?
我知道你可以创建一个包含文件列表的文本文件,然后告诉 7zip 引用这个文件,以便它可以从存档中排除它们,但我找不到它的语法。有人可以帮忙吗?
7-zip ×10
archiving ×3
command-line ×3
zip ×3
linux ×2
compression ×1
disk-space ×1
exclude ×1
extract ×1
pdf ×1
search ×1
switching ×1
windows ×1
windows-10 ×1
windows-7 ×1