Linux下常见的后缀名所对应的压缩工具

嵌入式技术

1372人已加入

描述

 

在Windows下,我们接触最多的压缩文件是.rar格式的,但在Linux下,不能识别这种格式,它有自己独特的压缩工具。但.zip格式的文件在Windows和Linux下都能使用。使用压缩文件,不仅能节省磁盘空间,而且在传输时还能节省网络带宽。

Linux下最常见的压缩文件通常都是.tar.gz格式的,除此之外,还有.tar、.gz、.bz2、.zip等格式。阿铭曾介绍过Linux下的文件后缀名可加可不加,但压缩文件最好加上后缀名。这是为了判断压缩文件是由哪种压缩工具所压缩的,而后才能正确地解压缩这个文件。下面介绍Linux下常见的后缀名所对应的压缩工具。

.gz:表示由gzip压缩工具压缩的文件。

.bz2:表示由bzip2压缩工具压缩的文件。

.tar:表示由tar打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)。

.tar.gz:可以理解为先由tar打包,然后再由gzip压缩。

.tar.bz2:可以理解为先由tar打包,然后再由bzip2压缩。

.tar.xz:可以理解成先由tar打包,然后再xz压缩。

9.1 gzip压缩工具

gzip命令的格式为gzip [-d#] filename,其中#为1~9的数字。

-d:该参数在解压缩时使用。

-#:这里的#为数字,表示压缩等级,-1为最差,-9为最好,-6为默认。

下面阿铭通过一个小例子来说明gzip的用法,示例命令如下:

 

# mkdir /tmp/8
# cd /tmp/8
# mkdir test
# mv /tmp/1.txt test/
# cd test
# ls
1.txt
# gzip 1.txt
# ls
1.txt.gz

 

gzip后面直接跟文件名,表示在当前目录下压缩该文件,而原文件也会消失。解压该压缩文件的方法如下所示:

 

# gzip -d 1.txt.gz
# ls
1.txt

 

命令gzip -d后面跟压缩文件表示解压压缩文件。gzip不支持压缩目录,压缩目录时会报错,如下所示:

 

# cd ..
# gzip test
gzip:
test is a directory -- ignored
# ls test
1.txt

 

关于-#选项,我们平时很少用到,使用默认压缩级别足够了。

9.2 bzip2压缩工具

bzip2命令的格式为bzip2 [-dz] filename,它只有-z(压缩)和-d(解压缩)两个常用选项。压缩级别有1~9,默认级别是9。压缩时,加或不加-z选项都可以压缩文件。示例命令如下:

 

# cd test
# bzip2 1.txt
# ls
1.txt.bz2
# bzip2 -d 1.txt.bz2
# bzip2 -z 1.txt
# ls
1.txt.bz2

 

bzip2命令也不可以压缩目录,压缩目录时会报错,如下所示:

 

# cd ..
# bzip2 test
bzip2: Input file test is a directory.

 

9.3 xz压缩工具

xz命令的格式为xz [-dz] filename,和bzip2类似,阿铭只介绍-z(压缩)和-d(解压缩)这两个常用选项。压缩时,加或不加-z选项都可以压缩文件。示例命令如下:

 

# bzip2 –d 1.txt.bz2
# xz 1.txt
# ls
1.txt.xz
# xz -d 1.txt.xz
# xz -z 1.txt
# ls
1.txt.xz

 

xz命令同样也不可以压缩目录,压缩目录时会报错,如下所示:

 

# cd ..
# xz test
xz:
test: Is a directory, skipping

 

8.4 tar打包工具

tar本身就是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成一个大文件,方便复制或者移动。该命令的格式为tar [-zjxcvfpP] filename tar,它有多个选项,其中不常用的阿铭做了标注。

-z:表示同时用gzip压缩。

-j:表示同时用bzip2压缩。

-J:表示同时用xz压缩。

-x:表示解包或者解压缩。

-t:表示查看tar包里的文件。

-c:表示建立一个tar包或者压缩文件包。

-v:表示可视化。

-f:后面跟文件名(即-f filename,表示压缩后的文件名为filename,或者解压文件filename。需要注意的是,如果是多个参数组合的情况下,请把-f参数写到最后面。

-p:表示使用原文件的属性,压缩前什么属性压缩后还什么属性。(不常用)

-P:表示可以使用绝对路径。(不常用)

--exclude filename:表示在打包或压缩时,不要将filename文件包括在内。(不常用)

具体操作过程如下:

 

# cd test
# xz –d 1.txt.xz
# mkdir test111
# touch test111/2.txt
# echo "nihao" > !$
echo
"nihao" > test111/2.txt
# cp 1.txt test111/
# yum install tree //安装tree命令,用来查看目录树形结构
# tree .
.
|--
1.txt
`--
test111
 |-- 1.txt
 `-- 2.txt
1
directory, 3 files
# tar -cvf test111.tar test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txt test111 test111.tar

 

首先,在test目录下建立test111目录,然后在test111目录下建立2.txt文件,并写入nihao到2.txt中。接着,用tar命令把test111打包成test111.tar(请记住,-f参数后紧跟打包后的文件名,然后再跟需要打包的目录或者文件)。使用tar命令打包后,原文件不会消失。在上例中,阿铭使用了一个特殊符号!$,它表示上一条命令的最后一个参数,这里是指test111/2.txt。

tar命令不仅可以打包目录,也可以打包文件,打包时可不加-v选项,表示不可视化。示例命令如下:

 

# rm -f test111.tar
# tar -cf test.tar test111 1.txt
# ls
1.txt test111 test.tar

 

其实不管是打包还是解包,原来的文件是不会删除的,而且它会覆盖当前已经存在的文件或者目录。下面我们先删除原来的test111目录,然后解包test.tar,如下所示:

 

# rm -rf test111
# ls
1.txt test.tar
# tar -xvf test.tar
test111/
test111/2.txt
test111/1.txt
1.txt

 

在日常管理工作中,你也许会用到--exclude选项,下面就来简单介绍一下它的用法,示例命令如下:

 

# tar -cvf test111.tar --exclude 1.txt test111//不用删除test111.tar,会自动覆盖
test111/
test111/2.txt

 

请注意,上例中test111.tar放到了--exclude选项的前面。该选项除了可以排除文件,也可以排除目录,示例命令如下:

 

# mkdir test111/test222
# tar -cvf test111.tar --exclude test222 test111
test111/
test111/2.txt
test111/1.txt

 

9.4.1 打包的同时使用gzip压缩

tar命令非常好用的一个功能就是可以在打包时直接压缩,它支持gzip压缩、bzip2压缩和xz压缩。使用-z选项,可以压缩成gzip格式的文件,示例命令如下:

 

# tar -czvf test111.tar.gz test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txttest111  test111.tar.gz  test.tar

 

使用-tf选项,可以查看包或者压缩包的文件列表,示例命令如下:

 

# tar -tf test111.tar.gz
test111/
test111/2.txt
test111/1.txt
# tar -tf test.tar
test111/
test111/2.txt
test111/1.txt
1.txt

 

使用-zxvf选项,可以解压.tar.gz格式的压缩包,示例命令如下:

 

# rm -rf test111
# ls
1.txt test111.tar.gz  test.tar
# tar -zxvf test111.tar.gz
test111/
test111/2.txt
test111/1.txt
# ls
1.txttest111  test111.tar.gz  test.tar

 

8.4.2 打包的同时使用bzip2压缩

和gzip压缩不同的是,这里使用-cjvf选项来压缩,压缩过程如下:

 

# tar -cjvf test111.tar.bz2 test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txttest111  test111.tar.bz2  test111.tar.gz  test.tar

 

使用-tf选项来查看压缩包的文件列表,示例命令如下:

 

# tar -tf test111.tar.bz2
test111/
test111/2.txt
test111/1.txt

 

使用-jxvf选项来解压.tar.bz2格式的压缩包,示例命令如下:

 

# tar -jxvf test111.tar.bz2
test111/
test111/2.txt
test111/1.txt

 

关于打包的同时使用xz压缩工具压缩,阿铭不再介绍,方法同9.4.1节和9.4.2节。

9.5 使用zip压缩

zip压缩包在Windows和Linux中都比较常用,它可以压缩目录和文件,压缩目录时,需要指定目录下的文件。示例命令如下:

 

# zip 1.txt.zip  1.txt
adding: 1.txt (deflated 64%)
# zip test111.zip test111/*
adding: test111/1.txt (deflated 64%)
adding: test111/2.txt (stored 0%)
adding: test111/test222/ (stored 0%)

 

说明: zip后面先跟目标文件名,即压缩后的自定义压缩包名,然后跟要压缩的文件或者目录。若你的Linux没有该命令,需要使用yum工具安装它,如下所示:

 

# yum install -y  zip

 

做完试验后就会发现,当目录下还有二级目录甚至更多级目录时,zip命令仅仅是把二级目录本身压缩而已。如果想要一并压缩二级目录下的文件,必须加上-r选项,如下所示:

 

# zip -r test111.zip test111/
updating:
test111/ (stored 0%)
updating:
test111/1.txt (deflated 64%)
updating:
test111/2.txt (stored 0%)
updating:
test111/test222/ (stored 0%)

 

这样就不需要用test111/*了。

解压.zip格式文件时并不用zip命令,而是用unzip命令。例如,解压1.txt.zip的命令为:

 

# unzip
1.txt.zip

 

若系统中没有unzip命令,需要使用yum工具安装它,如下所示:

 

# yum install -y unzip

 

9.6 zcat、bzcat命令的使用

上面介绍了使用-t选项可以查看tar压缩包的文件列表。对于gzip2或者bzip2压缩格式的文本文档,我们也可以使用zcat、bzcat命令直接查看文档内容。示例命令如下:

 

# cp /etc/passwd ./11.txt
# cp 11.txt 22.txt
# gzip 11.txt
# bzip2 22.txt
# zcat 11.txt.gz
# bzcat 22.txt.bz2

 

这样就可以查看11.txt或22.txt文件的内容了,大家猜一猜用什么命令可以查看xz压缩文件的内容呢?

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分