首页 > 代码库 > linux下的打包和压缩

linux下的打包和压缩

linux中常见的两种压缩包文件的格式是.tar.gz.tar.gz.tar只是将文件简单地打包,文件的大小没变化,也就是说.tar文件只是一个包,没有被压缩;.tar.gz文件打包后用gzip压缩得到的文件会被压缩存放,可以减小压缩文件的大小,可以便于传输和存储;.gz文件是将一个文件用gzip压缩之后得到的压缩文件。

常用的文件打包和压缩的命令是tar命令和gzip命令,下面分别介绍。

1gzipgunzip

gzip命令是用来压缩单个文件的,也就是说不能用来压缩目录。这样就不难理解为什么linux中要单独有一个用来打包的tar命令。因此,对于目录,可以先使用tar命令打包,然后用gzip命令进行压缩。当然,现在利用tar中的某些选项,也可以一步到位,详见下文。

gunzip命令是用来对gzip产生的压缩文件进行解压的。其实,gzip-d选项就是用来解压缩的。所以gunzip就等同于gzip -d

下面是gzip命令的几个例子:

  • a.txt压缩为当前目录下的a.txt.gz(默认的名字就是这个样子在原文件名的后面加一个.gz
    • gzip a.txt
  • a.txt.gz解压到当前目录
    • gunzip a.txt.gz
    • gzip -d a.txt.gz

到这里不难发现gzipgunzip在压缩文件或者是解压缩文件的时候,都会将原来的文件删除。因此,为了压缩或者解压缩之后保留源文件,我们要用到两个命令的-c选项。-c选项是将压缩的结果写到标准输出,这里用的是linux重定向的功能将标准输出中的压缩或者解压缩的结果写入到一个文件,从而得到解压缩或者压缩的结果,同时保留原文件。

  • .gz压缩
    • gzip -c filename > filename.gz
  • 解压缩
    • gunzip -c filename.gz > filename
    • gzip -cd filename.gz > filename

2tar

tar命令可以用来将目录打包,其中也提供了打包之后压缩的选项。下面是tar命令使用的几个例子。

创建压缩文件.tar

下面的命令会将lfqy目录下的test目录压缩为test-02-07-14.tar

tar -cvftest-14-09-12.tar /home/lfqy/test

其中,-c选项代表创建新的tar文件(也就是压缩包);-v表示显示创建的过程;-f表示指定新创建的tar文件的名字,-f后面必须要紧跟文件名,因此,f选项放在各个选项的最后面。

创建压缩文件.tar.gz

为了创建要给gzip压缩包,还要使用tar命令的-z选项。

下面的命令将lfqy目录下的test目录压缩为test-14-09-12.tar.gz

tar -cvzftest-14-09-12.tar.gz /home/lfqy/test

.tar文件的解压缩

为了解压.tar文件,要用到tar命令的-x选项代替压缩文件时用到的-c选项。文件默认会被解压到当前的目录,如果要指定解压到那个目录,需要用到-C选项。

下面的命令将文件解压到当前目录

tar -xvffilename.tar

下面的命令将文件解压到指定的目录

tar -xvffilename.tar -C /home/lfqy/file_untar/

tar.gz文件的解压缩

tar.gz文件解压缩的方式和tar文件相同

下面的命令将文件解压到当前目录

tar -xvffilename.tar.gz

下面的命令将文件解压到指定目录

tar -xvffilename.tar.gz -C /home/lfqy/file_untar/