Linux文件的打包和压缩
在使用Linux时,我们常常会遇到到以.tar.gz
、.tar.xz
或.tgz
结尾的文件,那这些文件到底是什么东西呢?怎么使用它们呢?本篇将解答这个疑惑。
压缩:gzip
.gz
表示该文件是使用gzip压缩的,.xz
表示是用xz来压缩的。在Linux系统中,常用的压缩命令有gzip、xz等,这里以最常用的gzip来进行说明。
我准备了一个短小精悍
的小例子来介绍gzip
工具。
首先,我们找一个文件来进行压缩,通过ls
命令在/etc目录下找一个最大的文件:
ls -ldSr /etc/*
上面ls命令中,使用了-ldSr
参数,其中各参数含义如下:
- -l: use a long listing format
- -d: list directories themselves, not their contents
- -S: sort by file size
- -r: reverse order while sorting
发现最大的文件是services
,大小为670KB
,那就用这个文件来进行压缩吧:
为了不影响原本的services文件,我们将其复制到/tmp目录下:
cd /tmp
cp /etc/services ./
接下来,我们就对/tmp/services
这个文件进行压缩,压缩的命令其实很简单:
gzip -v services
-v
参数表示verbose
,这个参数会显示压缩文件的压缩比。执行结果如下:
其中79.7%
表示压缩比,即文件的大小减少了79.7%,这个压缩比已经非常厉害了。同时,得到了一个压缩文件services.gz,有趣的是,原来的services文件消失了。如果想保留之前的services文件,可以:
gzip -c services > services.gz
-c表示Write output on standard output; keep original files unchanged
.
这样,原始文件services就不会消失了,通过 > 符号
输出到指定的文件。说完了压缩,那解压缩怎么做呢?
还是用gzip命令,搭配-d
参数(decompress):
gzip -d services.gz
注意,无论是压缩或解压缩,都是围绕gzip
这个命令来展开的,根据使用的不同,变换下参数就可以了。
打包:tar
既然有了压缩,那为啥还需要打包呢?
这是因为压缩一般是针对单个文件,如果有多个文件或文件夹,就需要将其先打包为一个大文件
,这样再使用压缩工具来进行压缩。
在Linux中,tar命令是用来打包的,同时也集成了压缩功能,所以实际上,我们最常用的就是这个tar
命令,我们来看一个具体的例子。
打包并压缩
在/tmp目录下有一个demo文件夹,demo文件夹中包含aaa和bbb二个文件,下面将/tmp/demo文件夹进行打包并压缩:
tar -zcvf /tmp/demo.tar.gz /tmp/demo
其中,各参数含义如下:
- -z:使用gzip进行压缩
- -c:create,创建打包文件
- -v:verbose
- -f:file,后面接文件
执行完成后,会在/tmp目录下生成demo.tar.gz
文件。
查看压缩文件
如果要查看已经打包的压缩文件,可以:
tar -ztvf /tmp/demo.tar.gz
其中,-t参数表示:list the contents of an archive。
解压缩
最后,我们来看看解压缩,这个命令可能是我们最常用的,因为很多时候,我们从网站上下载归档文件后,需要执行解压命令。比如,对上面的归档文件进行解压:
tar -zxvf /tmp/demo.tar.gz
- -x表示extract,extract files from an archive,从归档中提取文件。
总结
对于日常应用来说,tar的解压命令是最常用的,记住tar命令的解压参数-zxf
在实际工作中非常有必要。
参考
- 《鸟哥的Linux私房菜,基础学习篇(第四版)》,鸟哥著