天天看点

linux常用压缩与解压命令

1.常见压缩文件格式

*.tar                tar 技术压缩的包

*.tar.gz           tar 打包,但支持gzip技术解压缩

*.tar.bz2         tar打包,但支持 bzip2 技术解压缩

*.gz                 gzip 技术打包

*.bz2              bzip2技术打包

*.Z                  compress技术打包

linux 不会根据文件后缀来判定文件类型,不像win平台:exe就代表可执行文件,而linux下的可执行文件只要求文件有 x 权限

所以压缩文件也一样,具备上述这些格式的文件,也不一定是压缩文件,但适当的文件后缀是有必要的,简化我们的人的认知

注意:compress已经不再流行,被gzip取而代之。现在bzip2因为具备比gzip更优秀的压缩比,所以bzip2也是主流的解压缩技术

但是gzip和bzip2只适合对单个文件压缩,所以对目录或者多个文件打包,推荐使用 tar 打包

2.打包命令

********************* gzip 压缩与解压 **********************************

1.压缩

使用 gzip 命令压缩,默认情况下:压缩后源文件就不存在了

gzip man.config  会将当前目录man.config文件压缩成 man.config.gz 文件

gzip -v man.config 除了压缩,还会显示压缩比例等信息

gzip /etc/man.config 则将etc目录下man.config文件压缩

gzip * 则是将当前目录所有文件压缩

gzip a.txt b.txt 则是将当前目录下a、b这两个文本文档压缩

如果要保留原文件,则使用 -c 参数,比如

gzip -c man.config>man.config.gz  这样原文件会保留

gzip -c man.config>a.config.gz 这样原文件保留

注意自己命名压缩包名字时,可以不用 a.config.gz 也可以直接是 a.gz 或者更简单直接叫做 a

gzip -c man.config>a.gz  这样生成的压缩包叫做 a.gz

gzip -c man.config>a 这样生成的压缩包叫做 a ,虽然没有文件后缀,但也是压缩文件

2.解压

使用 gzip -d  解压,默认情况下,原gz文件被解压后也不存在了

gzip -d a.gz

gzip -d *

如果压缩包名字本来就是 a ,那就是这样  gzip -d a 直接压缩

如果你想保留原来的gz压缩包,解压后的文件重新生成一个,也使用参数 -c  比如

gzip -d -c a.config.gz > man.config  这样a.config.gz解压后变成了 man.config 文件

总结:

gzip 用于压缩和解压,可一次操作多个文件,或者使用通配符操作

不带任何参数:表示压缩文件

-d 表示解压文件

-c 表示解压或者压缩后,对新文件重命名

-v 表示输出压缩比信息

************************* bizp2 压缩与解压 *************************

bizp2 提供比 gzip 更好的压缩比,使用方法与gzip相同,参数也相同

注意文件格式是 bz2 比如

bzip2 -c man.config > a.config.bz2

总结:gzip 和 bzip2 都适合于解压和压缩单个文件,尽管也可以对目录操作,但不像winrar那种

是把一个目录以及里面的文件都压缩成一个大文件,而是对目录里面的每个文件单独压缩

所以要对目录操作,使用 tar,这就和windows平台使用 winrar 一样

而且winrar也支持把tar压缩后的文件解压开!

************************** tar 压缩与解压 ***************

man tar 查询到该命令的所有参数与使用方法,参数较多,注意以下几个常用参数

-j 表示tar包支持bzip2,所以带这个参数打包的话,文件可以命名为 *.tar.bz2 表示支持bzip2

-z 表示tar包直接gzip,可以命名为 *.tar.gz,如果这两个参数都不使用,建议命名为 *.tar

-v 表示打包或者解压过程中输出文件信息

-c 新建打包文件

-x 表示解压文件

-f 表示要处理的文件名

-t 表示查看tar包目录结构,一般你想拿到压缩包里面某一个文件时,可以先查看目录结构,再单独解压出来一个文件

1.打包

tar -jcv -f 文件名.tar.bz2  等待被打包的文件或者目录

tar -zcv -f 文件名.tar.gz   等待被打包的文件或者目录

tar -cv -f 文件名.tar       等待被打包的文件或者目录

这个参数 -f 可以和前面的参数合并,比如

tar -jcvf

tar -zcvf

tar -cvf

示例:

tar -jcvf test.tar.bz2  /etc/  表示把 etc 目录打包

tar -zcvf test.tar.gz  /etc/  很明显使用 gzip 技术打包

tar -cvf test.tar /etc/  直接使用tar技术打包

2.解压 -x表示解压文件

所以打解压命令只要把 打包 命令中的 c 换成 x 即可

tar -jxvf test.tar.bz2  直接在当前目录解压

tar -zxvf test.tar.gz   直接在当前目录解压

tar -xvf  test.tar      直接在当前目录解压

============ 如果要解压到指定目录,使用 -C 参数,注意是大写 C  ==============

tar -xvf test.tar -C b/ 表示解压到当前目录的 b 文件夹下

3.查看tar包目录结构 -t 表示查看

tar -jtvf test.tar.bz2

tar -ztvf test.tar.gz

tar -tvf  test.tar

4.解压tar包中单个文件

====>打包比如 /etc 目录已经打成了tar包,命名为 test.tar

tar -cvf test.tar /etc

====>先找到你要解压的单个文件在tar包中的目录,比如你想解压出来 passwd 文件

tar -tvf test.tar | grep 'passwd'   

这里使用 管道 | 来拼接两个命令,grep 'passwd' 本意是查找包含有 passwd 的文件(注意路径中包含也算)

结合 tar -tvf 来使用,就是在这个tar包中,查找包含 passwd 的文件

比如找打 /etc/passdw 这个文件,假设就是你想要解压的!

====>将tar包中 etc 目录下 passwd 文件解压出来:此处  etc/passwd 就是指在 test.tar 包中,passwd 的路径

tar -xvf test.tar   etc/passwd

继续阅读