我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

7-zip 是一款跨平台的开源压缩/解压软件,其官方网站为 。支持 7z、ZIP、GZIP、BZIP2、TAR 等格式,可以解压 RAR 文件(注:由于协议原因,暂时无法压缩为 RAR 格式),功能和压缩率堪比 .com,让那些苦于 Linux 下无法解压 RAR 文件的小伙伴们看到了希望。

关于 7z 格式

7z 格式与 RAR 格式类似,是一种支持不同压缩比的压缩格式,其最高级别的压缩比比 RAR 格式更高(即压缩后的文件大小比 RAR 格式小),当然压缩级别越高,压缩/解压所需的时间就越长,占用的内存也越多(甚至可能超过 7zip 可分配的内存大小,请特别注意)。最低的压缩级别为 0,也就是仅仅是打包。

安装

你可以在/下找到新利得软件包管理器或者软件中心,搜索“7z”,会看到有p7zip字样的软件包,安装即可。需要RAR格式支持的用户还需要安装7zip的rar模块,安装后就可以使用了。

您可以在命令行中使用apt-get p7zip-full(用户可以直接在前面添加sudo,用户可能需要先使用su切换到root用户)

和/或类似,此处省略。

用户请打开软件官方站点,地址是,在搜索框中输入“7zip”,选择你的版本。搜索后,一般安装第一个。

其他发行版的用户可以到自己的源中搜索,也可以在Linux上搜索相应的包或源代码进行安装。

用户请从上面搜索下载。安装过程非常简单,这里就不再赘述了。

如何在命令行中使用 7-zip

使用格式:7z [] [-] [] ...

第一个7z是程序名,7zip安装完成后会有三个程序:7z、7za、7zr。其中7z为全功能版(即启用所有模块的功能),7za只使用7zip本身,不启用其他模块(这种情况下不支持rar等格式),7zr是简化版,只支持7z格式。

第二个参数[]用于告诉7zip要执行什么功能:a用于创建压缩文件或向压缩文件中添加文件;d用于从压缩文件中删除文件;e用于解压缩但不创建目录结构;l用于显示压缩文件的内容;t用于测试压缩文件是否有效;u用于更新压缩文件中的文件;x用于解压缩并创建目录结构。

[-][] 为选项开关,部分选项后面会介绍,也可以使用 man 7z 命令查看详细说明。

是压缩文件的文件名,后面跟着输入文件的文件名(可以使用通配符,可以有多个文件)。

常用选择开关

-t:指定压缩格式,如-t7z

-m:设置压缩方式,具体请参见[url=file:///usr/share/doc/p7zip-full/DOCS///.htm]/usr/share/doc/p7zip-full/DOCS///.htm[/url](如果打不开,请参考自己的man page)

-p:为压缩包设置密码,可以在压缩时输入的命令后面加上-p,然后在执行时输入密码,也可以直接用-,如-

-mhe=on|off:仅适用于 7z 格式,打开或关闭文件列表加密,默认为关闭

-si:从标准输入读取数据,常与管道操作结合来压缩/打包文件。

-so:将数据写入标准输出,常与管道操作结合,用于解压/释放文件

-v:用于卷压缩。例如,如果您希望每个输出文件最大为 1MB,请使用 -v1m

-o:将解压后的文件存放到指定目录,如果要指定将解压后的文件输出到a目录,则使用-oa

-l:存储符号链接对应的文件/目录,并用此链接替换(注意压缩文件中不能有递归链接)

关于命令返回值

7-zip 退出后也有自己的返回值,如果要查看返回值,请在命令执行完后立即执行 echo $? 命令(也就是中途不要执行其他命令)即可查看返回值,下面列出了各个返回值的含义。

0 正常

1 警告(无错误),例如压缩过程中无法读取某些文件

2 错误

7 无法识别命令行参数

8 内存不足,无法执行操作

255 用户按 Ctrl+C 终止程序

7-zip 命令行使用示例

注:如无特殊说明,所有操作均在普通用户下进行。

1.基本操作

压缩

我将一些用于实验的文件放在~/temp下面,其结构如下:

包含三个文件、两个目录(其中一个是隐藏的)和两个子目录(其中一个是隐藏的)。

好的,让我们压缩这些文件并在命令行中执行它们

7z 一个温度.7z *

复制代码

效果如下:

压缩成功

查看压缩文件所含的文件

要查看压缩文件中的内容,可以执行以下命令

7z l 温度.7z

复制代码

效果如下:

将文件添加到压缩文件中

可以看到,除了 . 之外的所有文件和目录都添加到了压缩文件中,这种情况下隐藏文件和目录是不能直接压缩的,可以在压缩后添加隐藏文件,也就是执行命令

7z 一个 temp.7z 。

复制代码

好的,现在隐藏目录已经添加完毕。

解压文件(安装rar模块后,可以解压RAR文件)

接下来对压缩文件进行解压,解压的时候我们一般使用x,即7z x,因为e不会建立目录结构,直接将解压后的文件输出到当前目录,本例中所有解压后的文件都放在一个指定的目录t下,所以执行命令

7z x -ot 温度.7z

复制代码

可以看到,目录 t 已自动创建,并且 7zip 按预期解压文件。

注意:解压时不需要指定类型,7zip会自动识别。

2.加密文件

为了演示方便,首先将上例中输出的文件和目录全部删除。

如需加密压缩文件,可以使用-p参数,如

7z a -p 温度.7z *

复制代码

这时候会要求你输入密码然后再次验证,如果两次验证完全一致的话就算通过了。

此时解压文件时会要求输入密码,只有密码正确才能正常解压文件,否则输出文件全是空白文件,此时7-zip的输出结果为2,如

7z x -ot 温度.7z

复制代码

当然也可以在-p后面跟上密码内容,比如-,但是密码内容也会残留在屏幕上,有泄露的可能。

3.加密文件列表

7-zip 只使用 -p 来压缩文件,并不加密文件列表,虽然解压时必须输入密码,但通过 7z l .7z 还是可以查看文件列表的,所以可以加上参数 -mhe=on 来开启文件列表加密,可以和 -p 配合使用(注意,此方法只适用于 7z 格式的压缩),如

7z a -p -mhe=on temp.7z *

复制代码

此时若要查看文件列表,则必须输入密码,否则无法查看。

4.指定压缩级别

压缩级别越高,压缩文件占用的空间越小,但压缩/解压过程占用的内存越多,压缩/解压时间越长。有时候我们需要压缩较大的文件,或者需要压缩的所有文件大小都很大,可能会出现内存不足导致无法压缩/解压的问题。为了避免这个问题,需要调整压缩级别。调整压缩级别的参数为-mx=n,其中n可以为0、1、3、5、7、9,级别0仅为打包,不进行压缩。这里为了展示效果,以一个稍大的文件为例。

首先我们来看看默认的压缩级别。执行命令

7z 和 z.7z 6_64

复制代码

大约 16MB 的文件被压缩到大约 3MB。

让我们看看最高级别

7z a -mx=9 z9.7z 6_64

复制代码

默认级别和最高级压缩后的大小差不多(不过可以看出默认级别并不是最高级),我们先看一下0级。

7z a -mx=0 z0.7z 6_64

复制代码

0级压缩后的大小已经非常接近原文件了,所以可以认为0级压缩只是打包而已,没有进行压缩。

5. 体积压缩

如果你想要将压缩文件上传到论坛或者邮件,但是文件大小限制导致无法上传,该怎么办呢?7-zip 可以帮到你。分卷压缩的参数是 -v,用法是 -v{Size}[b|k|m|g]。比如你想将压缩文件分成 1MB 的文件,可以使用 -v1m,例如

7z a -v1m zv.7z 6_64

此时每个文件的最大大小为1M,这个问题就解决了。

6.系统备份

特别注意:7z文件本身不存储用户和组信息!若直接用于系统备份,还原后的系统内所有文件的用户和组都会被重置为解压后的用户和组!

例如,我为~/temp目录中的几个文件设置了以下权限:

使用以下命令进行压缩:

7z 一个温度.7z *

复制代码

然后使用su命令切换到root身份:

复制代码

然后解压缩:

7z x -ot 温度.7z

复制代码

瞧!虽然权限还保留,但用户和组就变成系统解包时的用户和主组了。如果直接用它来备份整个系统再还原,是非常危险的!所以需要先打包成tar文件,再压缩成7z格式,不过一般两步可以合二为一,也就是(注意,这里为了演示,先改回普通用户)

焦油C * | 7za a-si temp.tar.7z

复制代码

如何解压?使用以下命令(注意:由于已经切换回普通用户,因此使用su切换到root用户):

7za x -.tar.7z | tar xv

复制代码

OK,这次你可以看到所有的用户和组信息都被保留了下来,但是由于这种方法不再使用-ot参数,所以原始文件被删除了。

注意:手册页中给出的压缩命令格式是

tar cf - | 7za a -si .tar.7z

复制代码

但是 tar 的参数 f 表示指定输出文件的名称,而这里输出的是到 tar(也就是 7z 的 stdin),所以不需要加 f。加了 f 之后,后面还需要加一个“-”,不然会出问题。同样的,解压的时候,如果给 tar 加了参数 f,后面也需要加一个“-”(注意是空格),也就是

7za x -so .tar.7z | tar xf -

复制代码

7. 关于链接

默认情况下,7zip 会按原样保存符号链接。现在,我将 ~/temp 目录的结构和内容设置为如下所示。

现在执行命令ln -s ~/temp/fm创建目录的链接,然后进行压缩(注意,为了凸显效果,使用0级压缩,也就是只打包),执行命令

7z a -mx=0 温度.7z *

复制代码

使用7z x -ot temp.7z解压,然后使用ls -lt查看

可以看出压缩包中的符号链接是以链接形式存储的,我们来看看硬链接是怎么存储的,先删除t和temp.7z,然后执行命令

ln/6_64

7z a -mx=0 温度.7z *

ls -l 温度.7z

复制代码

可以看出,7zip并不能真正的识别硬链接,可能会在自身的压缩文件中建立两份,但是在高压缩级别下它会识别这两个文件是同一个文件,从而节省了不必要的硬盘开支。

有时你需要将符号链接指向的文件/目录原封不动地放入自己的压缩文件中,而不是存储原始链接。这时需要使用-l参数,但注意:压缩文件中不能包含递归链接,否则会出错!接下来先删除temp.7z文件,再执行命令

7z a -mx=0 -l 温度.7z *

复制代码

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4665.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线