7-Zip(7-Zip官方网站:http://www.7-zip.org/)是一个开源的数据压缩程序,主要用在Windows、类Unix操作系统。7-Zip主体在GNU LGPL下发布,加密部份使用AES的代码,使用BSD License发布,解压RAR部分使用RAR特定的许可协议。7-Zip默认的格式是其自行开发的7z格式,扩展名为“.7z”。7z格式包含多种算法,最常使用的就是Bzip2以及Igor Pavlov开发的LZMA。LZMA算法比起其他常见的传统压缩算法,比如Zip、RAR来说相对较新,压缩率也比较高。7z格式本地的使用Unicode来存储文件名称,可以避免不同系统间压缩解压乱码的问题。7-Zip支持众多的压缩/未压缩的文件格式,比如ZIP、CAB、RAR、ARJ、Z、gzip、bzip2、LLHA、tar、cpio、rpm。从4.42版开始支持CD/DVD镜像格式ISO,另外因为授权问题,不再支持ACE格式。
7-Zip也是目前最普及的开放源代码压缩程序。在RHEL 5.x中并没有提供7-Zip文件的压缩与解压功能,所在必须先使用安装7-Zip工具,具体操作步骤如下。
l 下载7-Zip for Linux。
[root@srv ~]# wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/p7zip-4.61-1.el5.rf.i386.rpm
l 安装7-Zip工具。
[root@srv ~]# rpm -ivh /p7zip-4.61-1.el5.rf.i386.rpm
在Linux中使用7za命令压缩/解压文件“.7z”文件,该命令语法如下。
7za <命令> [<选项>...] 压缩文件 [<参数变量>...]
常用选项:
l 压缩文件:需要压缩或解压的文件。
l 命令:执行7za命令时所作的操作。
l 选项:执行7za命令时操作的选项。
<命令>包括以下几个:
l a:添加文件到压缩文件。
l d:从压缩文件删除文件。
l e:从压缩文件中释放文件到当前目录中,或者通过“-o”选项指定目录。该命令会将所有被释放的文件放置到一个文件夹。如果想使用完整路径释放文件,您必须使用 “x”命令。7-Zip在覆盖现有文件时会提示用户如何进行下一步操作,除非用户自定义了“-y”选项。7-Zip所支持的回应包括:“y”是、“n”否、“a”将所有的询问以YES来对待、“s”将所有的询问以NO来对待、“q”退出程序。
l l:列出压缩文件内容。
l t:测试压缩文件文件的完整性。
l u在压缩文件中使用较新的文件替换掉较旧的文件。
l x:在当前目录中,使用完整路径从压缩档案中释放文件,或者通过“-o”选项指定目录。
<选项>包括以下几个:
l --:在命令行中使“--”后的选项开关“-”都失效。这样就允许在命令行中使用文件名以“-”开头的文件。
l -ai [<r[-|0]>] <@{listfile}|!{wildcard}>:指定附加文件,包括压缩档案文件名及通配符。此选项可同时附加多个类型。“<r[-|0]>”指定通配符及文件名,该选项在这里必须使用。如果此选项未被指定,那么将自动使用递归(有关递归参见“-r”选项)。<@{listfile} | !{wildcard}>指定要处理的文件的文件名、通配符或文件列表。{listfile}指定文件列表的文件名;{wildcard}指定通配符或文件名。
l -ao[a|s|u]:指定在释放期间如何覆盖硬盘上现有的同名文件。“-aoa”表示直接覆盖现有文件而没有任何提示;“-aos”表示跳过现有文件,其不会被覆盖;“-aou”表示如果相同文件名的文件以存在,将自动重命名被释放的文件,比如“test.docx”将被自动重命名为“test_1.docx”;“-aot”表示如果相同文件名的文件以存在,将自动重命名现有的文件。
l -ax [<r[-|0]>] <@{listfile}|!{wildcard}>:排除文件名。
l -i [<r[-|0]>] <@{listfile}|!{wildcard}>:指定附加文件或一类文件。
l -o:指定释放文件的输出文件夹,该选项只能和释放命令配合使用。
l -p:设置密码。
l -r[-|0]:把命令行中的通配符及文件名以指定的方法对待。“-r”表示开启递归子目录,对于e、l、t、x这些操作命令,会默认使用此选项;“-r-”表示关闭递归子目录,对于a、d、u等所有需扫描磁盘文件的命令,会默认使用此选项;“-r0”表示开启递归子目录。但只应用于通配符。
l -t{压缩类型}:指定压缩文件格式,可以是:zip、7z、rar、cab、gzip、bzip2、tar,默认值是7z格式。
l -v{大小}[b|k|m|g]:指定分卷大小,可以使用字节、KB、MB、GB(1 GB = 1024 MB)。可以同时指定多个“-v”选项。
l -w:为文件压缩设置临时的工作目录。
l -x [<r[-|0]>] <@{listfile}|!{wildcard}>:指定某一文件或某一类文件从操作中排除。
l -y:使 7-Zip执行命令时的大多数提示选择同意。
在“-i”、“-ai”、“-x”、“-ax”都可以通过{listfile}指定文件列表文件名;{wildcard}指定通配符或文件名。文件列表文件名可以对要操作的文件进行批量操作,在文件中的文件名必须用空格或另起一行隔开,如使用空格格开,每一个文件必须加引号,比如建立一个“lf.txt”的文件内容如下则表示要操作的文件为“/My doc”目录中所有扩展名为“docx”的文件和“/media”目录下所有扩展名为“mp3”的文件。7-Zip支持和Windows相类似的通配符:“*”表示任意个字符;“?”单个字符。
"/My doc/*.docx"
/media/*.mp3
下面看几个7-Zip命令的例子。
l 将“/boot”下所有内容以ZIP格式压缩为“bootbak.zip”文件。
[root@srv ~]# 7za a -tzip -r bootbak.zip /boot/*
l 将“/etc”下所有内容以7z格式压缩为“test.7z”文件,并对其进行分卷,第一个分卷为10MB;第二个为15MB,剩下全部为20 MB。
[root@srv ~]# 7za a test.7z -r /etc -v10m -v15m -v20m
l 从压缩文件“bootbak.zip”中释放所有文件到当前目录。
[root@srv ~]# 7za x bootbak.zip
l 从压缩文件“bootbak.zip”中释放所有扩展名为“*.conf”的文件到“/root”目录。
[root@srv ~]# 7za x bootbak.zip -r -o/root *.conf