日期:2014-05-16  浏览次数:20625 次

linux 压缩工具 7z的使用小技巧

Linux下有很多压缩工具,7z是已知最大压缩比的工具,它的使用比较复杂, 以下我记下的一些技巧

压缩命令(结合tar命令): tar cf - /home/test | 7z a -si test.tar.7z

???????????????? 上面命令将 /home/test 文件夹压缩为 test.tar.7z 文件

解压命令(结合tar命令) :?? 7z x -so test.tar.7z | tar xf - /home/alex

??????????????????????????????????????????????????? 这个命令将test.tar.7z 的内容解压到 /home/alex目录下

根据不同需要,还可以设置不同压缩比 ,这个命令特别适合做RAMDISK时候使用,大大节省宝贵的空间,希望对各位有帮助!

-m (设置压缩算法) 选项
指定压缩算法。

语法
-m<method_parameters>
此选项的格式依压缩档案的类型而定。

Zip
参数 默认值 说明
x=[0 | 5 | 9 ] 5 设置压缩等级。
m={MethodID} Deflate 设置压缩算法:Copy、Deflate、Deflate64、BZip2。
fb={NumFastBytes} 32 设置 Deflate 编码器的单词大小。
pass={NumPasses} 1 设置 Deflate 编码器的传送大小。

x=[0 | 5 | 9 ]
设置压缩等级

压缩等级 说明
0 不压缩。
5 默认的压缩等级。
9 最大压缩等级。压缩后的文件会更小。但是在压缩的时候会比较慢而且需要较多的物理内存。

fb={NumFastBytes}
设 置 Deflate 编码器的单词大小。您可以在 3 到 255 范围之内更改。在 Deflate 算法下,它的默认值是 32;在 Deflate 64 算法下,它的默认值是 64。如果要压缩的多个文件中,有很多排列相同的字节,比如说内容及格式极为相同的两个纯文本文档,那么在压缩的时候如果有较大的单词大小,将会在一定程 度上提高压缩比。所以,通常情况下,其数量越大,压缩后的文件就会越小。但是在压缩和解压缩的时候会比较慢而且需要较多的物理内存。

pass={NumPasses}
设置 Deflate 编码器的传送大小。您可以在 1 到 4 范围之内更改。在 Deflate 算法下,它的默认值是 1;在 Deflate 64 算法下,它的默认值是 3。此项可略微提升压缩比,但并不明显。

GZip
除了 GZip 不支持“储存”压缩算法之外,GZip 和 Zip 一样使用着相同的参数。

7z
参数 默认 说明
x=[0 | 1 | 5 | 7 | 9 ] 5 设置压缩等级。
s=[off | on | [e] [{N}f] [{N}b | {N}k | {N}m | {N}g] on 设置固实模式。
f=[off | on] on 开启或关闭可执行文件压缩过滤器。
hc=[off | on] on 开启或关闭档案文件头压缩。
hcf=[off | on] on 开启或关闭档案文件头完全压缩。
he=[off | on] off 开启或关闭档案文件头加密。
b{C1}[s{S1}]:{C2}[s{S2}] 设置编码器之间绑定。
{N}={MethodID}[:param1][:param2][..] LZMA 设置压缩算法:LZMA、PPMd、BZip2、Deflate、BCJ、BCJ2、Copy。
mt=[off | on] off 设置多线程模式。

x=[0 | 1 | 5 | 7 | 9 ]
设置压缩等级

压缩等级 说明
0 不压缩.
1 快速压缩:LZMA 快速算法、32KB 字典大小、HC3 Match finder、BCJ 过滤器。
5 正常压缩:LZMA 标准算法、2 MB 字典大小、BT4 Match finder、单词大小为 32、BCJ 过滤器。
7 最大压缩:LZMA 最大算法、8 MB 字典大小、BT4 Match finder、单词大小为 64、BCJ 过滤器。
9 极限压缩:LZMA 最大算法、32 MB 字典大小、BT4b Match finder、单词大小为 64、BCJ2 过滤器。

s=[off | on | [e] [{N}f] [{N}b | {N}k | {N}m | {N}g)]
开启或关闭固实模式。此选项的默认值是 s=on。开启或关闭固实压缩档案模式。在创建固实压缩档案模式中,它把压缩档案中的所有文件都当成一个连续数据流来看待。通常情况下,固实压缩可增加压 缩比,特别是在添加大量小文件的时候。

e 为每一种文件扩展名使用单独的固实数据流
{N}f 设置在一个固实数据流种文件的个数
{N}b | {N}k | {N}m | {N}g 设置固实数据流的大小(字节)

不同的压缩等级对固实数据流大小的限制:

压缩等级 大小
储存 0 B
快速 16 MB
正常 256 MB
最大 1 GB
极限 4 GB

对固实数据流大小的限制虽然能应响到压缩比,但是它还是有相当多的优势:

万一压缩档案损坏,并不会丢失所有数据。
减少了文件的释放时间。
在当前的版本中,您只能更新在压缩时未选择“创建固实压缩档案”的压缩档案。也就是说当前版本不支持固实压缩档案的更新。

示例:

-s=100f10m
设置固实模式使每个固实数据流种最多 100 文件,并且最大 10 MB 。

f=[off | on]
开启或关闭可执行文件压缩过滤器:dll、exe、ocx、sfx、sys。它用于 BCJ2 过滤器(使用极限压缩)及 BCJ 过滤器中。此选项的默认值是 f=on.

hc=[off | on]
开启或关闭档案文件头压缩。此选项的默认值是 hc=on。如果开启档案文件头压缩,一部分档案的文件头将使用 LZMA 算法进行压缩。

hcf=[off | on]
开启或关闭档案文件头完全压缩。此选项的默认值是 hcf=on。如果开启档案文件头完全压缩,那么此压缩档案只有 7-Zip 2.30 beta 25 及更高的版本才能支持。

he=[off | on]
开启或关闭档案文件头加密。此选项的默认值是 he=off。

{N}
设置算法的顺序。它也可以用算法关联参数。最小值为 0。含有从号的算法将被首先使用。

b{C1}[s{S1}]:{C2}[s{S2}]
将输出流 S1 及编码器 C2 中的输入流 S2 与编码器 C1 绑定。如果未指定流的大小,那么大小将为 0。

通常情况下,编码器有一个输入流及一个输出流。而在 7z 中,一些编码器有多个输入及输出流。

举个例子,BCJ2 编码器有有关输入流及四个输出流。

mt=[off | on]
开 启或关闭多线程压缩模式。在多线程支持模式中,7-Zip 将使用两个线程来进行压缩。这样的话,对于多处理器系统,那么压缩速度将提升 70-80%。对于 Pentium 4 超线程处理器,压缩速度将提升 25% 左右。但解压缩时只使用单独线程。注意!此选项仅对 LZMA 压缩算法有效。

{N}={MethodID}[:param1][:param2] ... [:paramN]
设置压缩算法。在 7z 格式中,您可以使用许多压缩算法。此选项的默认算法是 LZMA。

此参数必须是下列格式中的任意一种:

{ParamName}={ParamValue}。
{ParamName}{ParamValue},{ParamValue} 是一个数值,并且 {ParamName} 中不包含数字。
支持的压缩算法:

MethodID 说明
LZMA 基于 LZ 之上的压缩算法。
PPMd 基于 Dmitry Shkarin 之上的算法 PPMdH 并加以优化。通常能对纯文本提供高压缩比及较快的解压缩速度。
BZip2 基于 BWT 的标准压缩算法。通常能对纯文本提供较高压缩比及相当不错的解压缩速度。
Deflate ZIP 及 GZip 格式的标准压缩算法。没有很高的压缩比。但是它拥有十分快的压缩及解压缩速度。Def