前面已经进介绍过Linux中用到的归档程序tar,文件压缩解压程序gzip、zip,今天继续介绍另外四种常见的压缩程序bzip2、compress、xz、rar。
![af506f9f37a5311bb4416445b30ca86d.png](https://i-blog.csdnimg.cn/blog_migrate/596f5363d942133f7282492121ba63c2.jpeg)
文件压缩
bzip2
bzip2采用的是新的压缩演算法压缩文件,生成的“.bz2”压缩格式文件相对于“.gz”格式算法更先进、压缩比更好,但“.gz”格式压缩速度更快。bzip2命令压缩后文件通常以“.bz2”作为扩展名,对应的解压缩命令是bunzip2。
![ba1fd5b95942316b85a252f702f0a0ec.png](https://i-blog.csdnimg.cn/blog_migrate/9d21dbc2747dd726012000747b6a8667.jpeg)
bzip压缩
1、bzip2命令语法
bzip2 [选项] [文件]
命令中选项的含义:
-c:将压缩与解压缩的结果送到标准输出-d:执行解压缩-f:在压缩或解压缩时,如果输出文件与现有文件同名,则覆盖现有文件-k:在压缩或解压缩后,会保留原文件-s:降低程序执行时内存的使用量-t:测试压缩文件的完整性-v:压缩或解压缩文件时,显示详细信息-z:强制执行压缩-1...-9:设置块的大小到100k...900k-best:-1的别名-fast:-9的别名-q:禁止非关键性的错误信息
2、bzip2命令压缩、解压
将/home/test文件压缩成/home/test.bz2:
[root@liu ~]# bzip2 /home/test// bzip2 命令只需指定源文件[root@liu ~]# ls -l /home/test.bz2 -rw-r--r-- 1 root root 56 8月 25 02:37 /home/test.bz2
显示/home/test.bz2的信息:
[root@liu ~]# bzcat /home/test.bz2 Hello World
将/home/test.bz2解压缩:
[root@liu ~]# bzip2 -dv /home/test.bz2 /home/test.bz2: done
3、bunzip2命令解压
bunzip2实际上是bzip2的符号链接文件,但bunzip2命令和bzip2命令的功能正好相反,与执行bzip2 -d命令效果相同。
解压/home/test.bz2:
[root@liu ~]# bunzip2 /home/test.bz2 [root@liu ~]# ls -l /home/test -rw-r--r-- 1 root root 12 8月 25 02:37 /home/test
xz
xz是一个使用LZMA压缩算法的无损压缩文件格式,和gzip、bzip2一样,支持多文件压缩,但xz不能将多于一个的目标文件压缩进同一个归档文件,xz比gzip、bzip2的压缩率更高、生成的文件更小,而且解压缩数据的速度也非常快。xz命令压缩后文件通常以“.xz”作为扩展名。
![7830e08187231fe0af89b7a8070b53a8.png](https://i-blog.csdnimg.cn/blog_migrate/227a57e4bfef4ccb7367198579419fd2.jpeg)
xz
1、xz命令语法
xz [选项] [文件]
命令中选项的含义:
-z:强制执行压缩-d:强制执行解压缩-t:测试压缩文件的完整性-l:列出压缩文件的信息-k:保留源文件不要删除-f:强制覆盖输出文件和压缩链接-c:写入到标准输出,输入文件不要删除-0...9:压缩比例,默认为6-v:显示更详细的信息
2、xz命令压缩、解压
将/home/test文件压缩成/home/test.xz:
[root@liu ~]# xz -z /home/test// xz 命令只需指定源文件[root@liu ~]# ls -l /home/test.xz -rw-r--r-- 1 root root 56 8月 25 08:43 /home/test.xz
将/home/test.Z解压缩:
[root@liu ~]# xz -d /home/test.xz
3、xzcat查看压缩文件
使用xzcat命令查看压缩文件内容。
查看/home/test.xz的内容:
[root@liu ~]# xzcat /home/test.xzHello World
compress
compress是一款历史悠久的unix 档案压缩指令,文件压缩后,名称后面多出“.Z”的扩展名。事实上,compress命令使用的压缩算法不够先进,很多场合被gzip和gunzip所替代,但一些老的压缩文件可能还是.Z格式。
![4c1c9d5ba71da9b68a3b8f03ba7ad217.png](https://i-blog.csdnimg.cn/blog_migrate/3a89532733a040c59ab99eb417ef63c4.jpeg)
compress压缩
1、compress命令语法
compress [选项] [文件]
命令中选项的含义:
-b:压缩效率是一个介于9~16的数值,预设为16,指定值越大压缩效率越高-c:把压缩后的文件输出到标准输出设备,不删除原始文件-d:对文件进行解压缩-f:强制执行压缩或解压缩-r:递归处理,将指定目录下的所有文件及子目录一并处理-v:显示压缩统计信息
2、compress命令压缩、解压
将/home/test文件压缩成/home/test.Z:
[root@liu ~]# compress /home/test// compress 命令只需指定源文件[root@liu ~]# ls -l /home/test.Z-rw-r--r-- 1 root root 56 8月 25 06:42 /home/test.Z
将/home/test.Z解压缩:
[root@liu ~]# compress -d /home/test.Z
3、uncompress命令解压
uncompress命令可以解压.Z格式压缩文件,而uncompress实际上是指向compress的符号链接(软链接)。
解压/home/test.Z:
[root@liu ~]# uncompress /home/test.Z
rar
rar是一款无损数据压缩方式,rar文件通常比zip文件压缩比更高,但压缩速度慢,rar压缩文件头要占用一定的磁盘空间,所以在数据压缩余地不大时,压缩过的文件可能比未压缩的源文件还要大,rar压缩文件的扩展名是“.rar”。
![d828acc59536b26793964c99c6157ed0.png](https://i-blog.csdnimg.cn/blog_migrate/15bf000a51b593a23c3319f15a72b92f.jpeg)
rar压缩
1、rar命令语法
rar [命令] [开关] [压缩文件] [文件] [@列表文件] [解压路径]
命令中[命令]部分的含义:
-a:添加文件到压缩文件中
-c:添加压缩文件注释
-ch:更改压缩文件参数
-r:修复压缩文件
-x:使用完整路径压缩文件
-t:测试压缩文件完整性
-u:在压缩文件中更新文件
-k:锁定压缩文件
-e:无需压缩文件路径解压文件
-d:从压缩文件中删除文件
-cw:写入压缩注释到文件
-f:刷新压缩文件中的文件
-i[par]=:在压缩文件中查找字符串
-l[t[a],b]:列出压缩文件内容
-m[f]:移动到压缩文件中
-p:打印文件到标准输出
-rc:重建丢失的卷
-m:重命名压缩文件
-rr[N]:添加数据恢复记录
-s[name|-]:转换压缩文件成自解压文件
-v[t[a],b]:详细列出压缩文件内容
-rv[N]:创建恢复卷
命令中[开关]部分的含义:
-p:设置密码-x:排除指定的文件-w:指定工作目录-z:读取压缩文件的注释-r:递归子目录-r-:禁止递归-y:所有查询均回答yes-cu:将文件名转换为大写-cl:将文件名转换为小写-o+:覆盖已有文件-o-:不覆盖已有文件-f:更新文件-tl:设置压缩文件时间为最新文件时间-ep:从名称中排除路径-epl:从名称中排除基本路径
2、rar命令压缩、解压
压缩/home/test_d目录:
[root@liu ~]# mkdir /home/test_d[root@liu ~]# cp /home/test /home/test_d/file.log// 创建/home/test_d目录和/home/test_d/file.log文件[root@liu ~]# rar -a /home/test_d.rar /home/test_dRAR 5.01 Copyright (c) 1993-2013 Alexander Rosh1 1 Dec 2013Trial version Type RAR -? for helpEvaluation copy. Please register.Creating archive /home/test_d.rarAdding /home/test_d/file.logAdding /home/test_dDone[root@liu ~]# ls -l /home/test_d.rar-rw-r--r-- 1 root root 56 8月 25 08:37 /home/test_d.rar
将file1、file2文件一起压缩到file.rar之后,删除源文件:
[root@liu ~]# rar -a -df file.rar file1 file2RAR 5.01 Copyright (c) 1993-2013 Alexander Rosh1 1 Dec 2013Trial version Type RAR -? for helpEvaluation copy. Please register.Creating archive file.rarAdding file1Adding file2Deleting file2 deletedDeleting file1 deletedDone[root@liu ~]# ls -l file.rar-rw-r--r-- 1 root root 56 8月 25 08:44 file.rar[root@liu ~]# ls -l file1 file2ls: 无法访问file1: 没有那个文件或目录ls: 无法访问file2: 没有那个文件或目录
将file3压缩到已经存在的file.rar中:将
[root@liu ~]# rar -a file.rar file3RAR 5.01 Copyright (c) 1993-2013 Alexander Rosh1 1 Dec 2013Trial version Type RAR -? for helpEvaluation copy. Please register.Creating archive file.rarAdding file3Done
检测/home/test_d.rar压缩文件完整性:
[root@liu ~]# rar -t /home/test_d.rarRAR 5.01 Copyright (c) 1993-2013 Alexander Rosh1 1 Dec 2013Trial version Type RAR -? for helpTesting archive /home/test_d.rarTesting /home/test_d/file.logTesting /home/test_dAll OK
解压缩/home/test_d.rar文件,如果已经存在文件则覆盖:
[root@liu ~]# rar -x -o+ /home/test_d.rarRAR 5.01 Copyright (c) 1993-2013 Alexander Rosh1 1 Dec 2013Trial version Type RAR -? for helpExtracting from /home/test_d.rarExtracting /home/test_d/file.logAll OK
3、unrar命令语法
unrar [命令] [开关] [压缩文件] [文件] [@列表文件] [解压路径]
命令中[命令]部分的含义:
-e:无需压缩文件路径解压文件-l[t,b]:列出压缩文件内容-p:打印文件到标准输出-t:测试压缩文件-v[t,b]:详细列出压缩文件内容-x:用完整路径解压缩文件
命令中[开关]部分的含义:
-u:更新文件-v:列出所有卷-p:设置密码-p-:不查询密码-r:递归子目录-cu:将文件名转换为大写-cl:将文件名转换为小写-ow:排除指定文件-c:禁止注释显示-x:排除指定文件-x@:排除指定列表文件中列出的文件-o+:覆盖已有文件-o-:不覆盖已有文件-f:更新文件-ai:忽略文件属性
4、列出/home/test_d.rar压缩文件内容
[root@liu ~]# unrar -l /home/test_d.rarUNRAR 5.01 freeware Copyright(c) 1993-2013 Alexander Rosh1 Archive:/home/test_d.rarDetails:RAR 4Attributes Size Date Time Name------- ------- ------- ------- --------rw-r--r-- 37 8月 25 08:06 /home/test_d/file.logdrwxr-xr-x 0 3月 18 17:16 home/test_d------- ------- ------- ------- ------- 37 2
5、解压缩/home/test_d.rar文件到新目录/home/test_d2
[root@liu ~]# mkdir /home/test_d2// 创建目录/home/test_d2[root@liu ~]# unrar -e /home/test_d.rar /home/test_d2UNRAR 5.01 freeware Copyright(c) 1993-2013 Alexander Rosh1 Extracting from /home/test_d.rarExtracting /home/test_d2/file.logAll OK