Linux下的gzip和bzip2命令都是针对文件的压缩。即使针对目录来压缩,也是将目录下的文件逐个压缩,而不是像Windows下的winrar软件一样,可以将目录整个压缩。那要实现目录整个压缩的功能,就要用到tar这个打包命令。而tar不仅有打包的功能,其还能通过调用bzip2或gzip进行压缩和解压缩。

tar的选项非常多,常用的选项含义如下:

-c:打包文件,可搭配-v来察看过程中被打包的文件

-t:查看打包后的文件中都打包了哪些文件

-x:解打包或解压缩。可以搭配-C(大写C)将文件解压到特写目录中去

-j:通过bzip2的支持进行压缩/解压缩,此时一般产生的文档名为*.tar.bz2

-z:通过gzip的支持进行压缩/解压缩,此时一般产生的文档名为*.tar.gz

-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f filename:-f后面跟要产生的文件名。建议-f单独写一个选项

-C 目录:解压缩的时候,可以使用-C选项来解压到特定目录中去

-p:保留原数据的权限与属性

-P(大写P):保留绝对路径

--exclude=file:可以将某文件单独去掉,不打包它

其实tar命令最常用的选项如下:

tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名 //此命令用于打包和压缩

tar -jtv -f filename.tar.bz2 //此命令用于查询文件

tar -jxv -f filename.tar.bz2 -C 要解压到的目录 //此命令用于解压到特定目录

在上述3个命令中,都是使用了bzip2进行压缩和解压。其中,filename.tar.bz2即是压缩产生的那个文件。而最后一个解压的命令,如果不加-C选项,是默认解压到当前目录。

再值得一提的是,由于tar命令不像gzip和bzip2那样会自动产生新文件名,所以需要我们自定义产生的压缩文件包。如果是只是打包,则最好将产生的文件命名为filename.tar,如果是又调用bzip2进行了压缩,则最好将产生的文件命名为filename.tar.bz2。

tar命令详解_Windows

上图中,使用tar将新创建的file1/file2/file3/file4进行了打包和压缩,并产生了新的压缩文件file1234.tar.bz2。

而要查询压缩文件中都有哪些文件,可以:

tar命令详解_软件_02

而解压缩的话,可以:

tar命令详解_winrar_03

需要注意的是,在某些教材上,将仅使用tar -c进行打包的文档叫做tarfile,而如果在打包的同时进行了压缩的操作,则将产生的文件叫做tarball。