`
lxs647
  • 浏览: 523166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 格式的标准压缩算法。没有很高的压缩比。但是它拥有十分快的压缩及解压缩速度。Deflate 压缩算法只支持 32 KB 字典大小。
BCJ (CALL、JUMP)32 位 x86 可执行文件转换器。
BCJ2 (CALL、JUMP、JCC)32 位 x86 可执行文件转换器(第二版)。
Copy 不压缩。

LZMA
LZMA 是基于 Lempel-Ziv(由以色列数学家 A.Lempel 和 J.Ziv 共同开发的压缩算法)之上的压缩算法。它能提供相当快的解压缩速度(约比压缩快 10 到 20 倍)。对内存的需求也不尽相同(详细信息请参见 d={Size}[b|k|m] 选项)。

参数 默认值 说明
a=[0|1|2] 1 设置压缩等级
d={Size}[b|k|m] 20 设置字典大小
mf={MF_ID} bt4 设置匹配器
fb={N} 32 设置紧缩字节数量
lc={N} 3 设置 Literal Context 块数 - [0, 8]
lp={N} 0 设置 Literal Pos 块数 - [0, 4]
pb={N} 2 设置 Pos 块数 - [0, 4]

a=[0|1|2]
设置压缩等级:0=快速、1=正常、2=最大压缩。默认值为 1。

d={Size}[b|k|m]
设 置 LZMA 压缩算法的字典大小。您可以使用字节、KB 或 MB 来指定此项。字典大小的最大值为 256 MB=2^28 字节。正常模式下,LZMA 的字典大小默认值为 21(2 MB) ;最大模式(-mx=7)下为 23(8 MB);极限模式(-mx=9)下为 25(32 MB)。如果您未指定 [b|k|m] 项,字典大小将自动根据压缩等级来选择相应的单位。对于 LZMA 算法的文件解压缩,若压缩文件的字典大小为 64 MB,则解压缩时就需要 64 兆可用的物理内存。

mf={MF_ID}
设 置 LZMA 压缩算法的匹配器。默认算法为 bt4。bt* 类的算法所需的内存比 pat* 类所需的内存少。通常情况下 bt4 的工作速度比 pat* 快得多,然而部分文件格式在 pat* 算法中可以工作得很快。hc* 类算法并没有很好得压缩比,但是它与快速模式(a=0)结合使用通常会工作得相当快。所需内存依字典大小而定(参见下表)。

MF_ID 所需内存 说明
bt2 d×9.5 + 1 MB 二进制树;2 散列字节。
bt3 d×9.5 + 65 MB 二进制树;2-3(完整) 散列字节。
bt4 d×9.5 + 6 MB 二进制树;2-3-4 散列字节。
bt4b d×9.5 + 34 MB 二进制树;2-3-4(大) 散列字节。
pat2r d×26 + 1 MB Patricia 树;2-位节点;可移动。
pat2 d×38 + 1 MB Patricia 树;2-位节点。
pat2h d×38 + 77 MB Patricia 树;2-位节点;2-3 散列字节。
pat3h d×62 + 85 MB Patricia 树;3-位节点;2-3 散列字节。
pat4h d×110 + 101 MB Patricia 树;4-位节点;2-3 散列字节。
hc3 d×5.5 + 1 MB Hash Chain;-3 散列字节。
hc4 d×5.5 + 6 MB Hash Chain;2-3-4 散列字节。

注意:操作系统同样需要一部分物理内存来维持系统得正常运行。所以至少要剩余 32 可用物理内存。

fb={N}
设置 LZMA 压缩算法的紧缩字节。有效范围从 5 到 255。正常模式下默认值为 32;最大模式下为 64 。通常情况下,较大的数值能略微提高压缩比。但同时也会降低压缩速度。

lc={N}
设置 Literal Context 位数。有效范围从 0 到 8。默认值为 3。有时压缩档案中含有大文件会自动使用 lc=4。

lp={N}
设置 Literal Pos 位数。有效范围从 0 到 4。默认值为 0。

pb={N}
设置 Pos 位数。有效范围从 0 到 4。默认值为 2。

PPMd
PPMd 是 PPM-based 压缩算法的简写。它基于 Dmitry Shkarin 的算法 PPMdH 并对其源代码加以优化。PPMd 通常能对纯文本提供高压缩比及较快的解压缩速度。压缩和解压缩的速度完全相同,所需的内存大小也一样。

参数 默认值 说明
mem={Size}[b|k|m] 24 设置 PPMd 算法使用内存。
o={Size} 6 设置 PPMd 算法压缩命令。

mem={Size}[b|k|m]
设 置 PPMd 算法使用的内存多少。您可以使用字节、KB 或 MB 来指定此项。最大值为 2 GB=2^31 字节;默认值为 24(16MB)。如果您未指定 [b|k|m] 项,字典大小将自动根据压缩等级来选择相应的单位。PPMd 在压缩和解压缩时所需的内存大小是相同的。

o={Size}
设置 PPMd 算法压缩命令。其大小必须在 [2,32] 范围内。默认值为 6。

BCJ2
BCJ2 是 32 位 x86 可执行文件转换器(第二版)。它通过转换分支指令来对文件进行进一步压缩。

BCJ2 编码器有一个输入流和四个输出流:

s0:干流。提供进一步的压缩。
s1:CALL 值转换流。提供进一步的压缩。
s2:JUMP 值转换流。提供进一步的压缩。
s3:服务流。它已经备压缩过。
如果使用 LZMA 压缩算法,s1 及 s2 流的字典大小将会比 s0 流的小(512 KB)。

示例
7z a -tzip archive.zip *.jpg -m0
不压缩而直接将 *.jpg 文件添加到 archive.zip 档案。

7z a -t7z archive.7z *.exe *.dll -m0=BCJ -m1=LZMA:d=21 -ms -mmt
添加 *.exe 及 *.dll 文件到固实压缩档案 archive.7z。使用 LZMA 压缩算法、2 MB 字典大小及 BCJ 转换器。压缩将开启多线程优化(如果可用)。

7z a -t7z archive.7z *.exe *.dll -m0=BCJ2 -m1=LZMA:d23 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3
添加 *.exe 及 *.dll 文件到压缩档案 archive.7z。使用 LZMA 压缩算法、BCJ2 转换器、为主输出流(s0)使用 8 MB 字典大小、LZMA 算法为 BCJ2 转换器的 s1 及 s2 输出流使用 512 KB 字典大小。

7z a -t7z archive.7z *.txt -m0=PPMd
添加 *.txt 文件到压缩档案 archive.7z。 使用 PPMd 压缩算法。

可以和此选项结合使用的命令
a (添加), d (删除), u (更新)

其它
选项: -t (设置压缩档案格式)

分享到:
评论

相关推荐

    linux下的压缩与解压缩

    通过本文的学习,我们可以了解到Linux系统下压缩与解压缩的基本原理及常用工具的使用方法。掌握这些技能对于日常的数据管理尤为重要。无论是简单的文件压缩还是复杂的多卷归档,都有相应的工具和命令可以实现。希望...

    Linux 相关文件\linux下tar gz bz2 tgz z等众多压缩文件的解压方法

    本文主要探讨了Linux环境下如何处理不同类型的压缩文件,包括.tar、.gz、.bz2、.tgz、.z以及.zip和.rar文件。 首先,我们需要理解打包和压缩两个概念的区别。打包(tar)是将多个文件或目录整合为一个单一的文件,...

    linux 压缩 解压 详解.doc

    ### Linux压缩与解压缩详解 #### 一、Tar 命令详解 在Linux系统中,`tar`命令是最常用的打包工具之一。该命令能够帮助用户轻松地将多个文件打包成一个文件,这对于备份和传输文件非常有用。下面将详细介绍`tar`...

    linux下tar解压缩指令小结

    本文将围绕“linux下tar解压缩指令小结”这一主题,详细解析各种常见压缩格式的处理方法,以及如何使用tar命令进行打包与解包。 ### 1. tar命令的基本理解 首先,需要澄清一个概念:tar命令主要用于打包文件,并不...

    Linux的一些实用小技巧.pdf

    这篇文章收集了Linux操作系统的一些实用小技巧,旨在帮助用户更好地使用Linux系统。以下是这些技巧的详细说明: 1. 在终端下显示彩色目录及文件列表 使用`ls`命令可以显示目录和文件列表,但使用`ls -C`或`ls --...

    linux文件压缩命令

    7z是一种强大的压缩工具,支持多种压缩算法。使用7z压缩文件: ```bash 7z a example.7z example.txt ``` 解压缩: ```bash 7z x example.7z ``` 六、文件压缩选择 选择哪种压缩工具取决于您的需求。如果速度更...

    【7z】进行压缩

    在博文链接中(https://duduli.iteye.com/blog/1675518)可能进一步详细介绍了7-Zip的使用技巧和高级功能,例如如何利用批处理文件批量压缩,如何创建自解压文件,以及如何在脚本中调用7-Zip进行自动化操作等。...

    linux解压命令大全

    ### Linux解压命令大全 #### 一、概述 在Linux操作系统中,文件压缩与解压缩是非常常见的操作之一。本文档汇总了Linux系统中常见的压缩文件格式及其对应的解压缩命令,旨在帮助用户快速查找并处理不同格式的压缩...

    Linux压缩解压缩方法汇总

    ### Linux压缩解压缩方法详解 #### 一、前言 对于初学者而言,Linux系统中的文件管理和压缩方式可能显得较为复杂。与Windows操作系统常见的`.zip`和`.rar`压缩文件不同,Linux支持多种多样的压缩格式,如`.gz`、`....

    Linux服务器备份和恢复技巧

    `tar`(Tape ARchive)是一个功能强大的文件打包工具,它支持多种压缩格式,并且在Linux和Unix系统中广泛使用。通过合理配置`tar`命令,可以高效地实现服务器数据备份。 ##### 2.1 基础命令语法 ```bash tar [选项...

    linux之centos7打包与压缩命令详解

    ### Linux之CentOS 7 打包与压缩命令详解 #### 一、概述 在Linux环境中,文件管理和数据处理是一项非常重要的技能。特别是在系统管理、软件开发等领域,掌握高效的文件打包与压缩技巧对于提高工作效率至关重要。...

    LINUXAS压缩文件命令大全

    在Linux系统中,压缩文件是日常管理与操作中不可或缺的一部分,尤其在文件传输、存储空间优化及备份场景下。本文将全面解析Linux中常见的压缩文件命令及其用法,旨在...希望本文能成为你Linux压缩文件操作的得力助手。

    陈云飞.7z

    2. **7-Zip软件**:7-Zip是一款开源的压缩和解压缩工具,支持多种格式,如7z、ZIP、GZIP、BZIP2等,其用户界面和命令行版本的使用方法。 3. **文件管理**:如何在Windows或Linux系统中处理压缩文件,包括创建、提取...

    小丸工具箱

    1. 多格式支持:小丸工具箱支持多种常见的压缩格式,如RAR、ZIP、7Z等,同时对某些特殊格式也有良好的兼容性,满足了用户在处理不同来源文件时的需求。 2. 高效压缩:采用先进的压缩算法,能够在保证文件质量的同时...

    na小技巧

    3. **文件管理**:在处理大量文件时,学会批量重命名、使用通配符选取文件以及利用归档和压缩工具(如WinRAR、7-Zip)可以节省大量时间。例如,7-Zip不仅支持常见的.zip和.rar格式,还支持更高效的7z格式,并且可以...

    securecrt远程连接工具解压版

    《SecureCRT:强大的Linux远程连接工具详解》 SecureCRT是一款广泛使用的远程连接工具,尤其在IT行业中,它被广大系统管理员、开发人员和网络工程师所青睐。它支持多种协议,包括SSH1、SSH2、Telnet、Serial和...

    tutorials.7z

    7-Zip以其高压缩比和开放源代码特性而闻名,这使得“tutorials.7z”可能包含了大量内容,而文件大小却相对较小。解压这个文件,我们将能够获取到一系列的教程,涵盖各种IT主题,可能是编程语言、操作系统、网络技术...

    自由软件技巧共享Linux运用

    Linux操作系统,作为一种...这些技巧只是Linux世界的一小部分,不断学习和探索,你会发现Linux是一个强大而灵活的工具,适用于各种工作环境。无论是系统管理员还是普通用户,掌握这些基本技巧都能显著提升使用体验。

    linux技巧1

    通过`man`命令可以获取到几乎所有的Linux命令、程序或工具的使用说明。例如,如果想要了解`libnet`库的相关信息,可以通过以下命令: ```bash nroff -man `man libnet.3` | less ``` 这里的`nroff`是一个文本格式...

Global site tag (gtag.js) - Google Analytics