计算机网络/计算机科学与应用/系统/运维/开发

Linux【tar】文件打包与压缩

tar:

文件打包就是将多个文件和目录合并保存为一个整体的包文件,方便传输

压缩则可以减小包文件所占用的磁盘空间。


常用打包命令 : tar

常用压缩命令 : gzip  bzip2  xz

gzip 压缩的文件通常使用 “.gz”作为文件名后缀

bzip2 压缩的文件通常使用 .bz2 作为文件后缀

xz 压缩的文件则通常使用.xz 文件名后缀 


以上3种压缩工具都只能针对单个文件进行压缩与解压,所以,

通常需要先通过tar命令将多个文件或目录进行打包成一个包文件

然后调用某种压缩工具进行压缩,如文件后缀为 “.tar.gz” ".tgz" ".tar.bz2" 的文件就属于先打包再压缩的文件


实际中,一般通过tar命令调用gzip  bzip2 或xz进行压缩或解压,很少单独使用这些压缩命令


1、打包和压缩

tar命令本身只能对目录和文件进行打包,而不进行压缩。


语法:

tar [选项] 打包或压缩后的文件名  需要打包的源文件或目录


例如:将/tmp 目录下的 test1.txt 打包成 test.tar 

[root@iZ2zea4u8pasyhtllbo54oZ tmp]# tar -cvf test.tar /tmp/test1.txt 
tar: Removing leading `/' from member names
/tmp/test1.txt


报错:“tar: Removing leading `/’ from member names”的错误

原因:tar默认是相对路径,使用绝对路径的话,可以使用-P参数(大写)

tar -zcPf  /tmp/test1.txt 

f放后面


或者使用相对路径:

[root@iZ2zea4u8pasyhtllbo54oZ tmp]# tar -cvf test.tar test1.txt 
test1.txt


选项:

-c : 创建 “.tar”格式的包文件,该选项不会对包文件进行压缩
-v:显示命令的执行过程,该选项非必须,可根据情况选用
-f:指定要打包或解包的文件名称,该选项必须放到选项组合的最后一位

例如:调用gzip将/etc 目录下的所有文件打包并压缩成 etc.tar.gz  “-z”选项表示调用gzip来压缩文件

# tar -zcf  etc.tar.gz  /etc


例如:调用bzip2将/etc 目录下的所有文件打包并压缩成etc.tar.bz2 , "-j" 选项表示调用bzip2 来压缩包文件

# tar  -Jcf  etc.tar.gz  /etc


执行完毕后,可以通过“du -h etc.*” 比较各个文件的大小,可以发现,xz方式在上面几种压缩比率最高的。但压缩过程耗时最长。

压缩比率通常与耗时成正比

# du -h etc.*


打包和压缩后生成的文件都保存在当前目录下,如果需要指定保存位置,那么在文件名部分使用绝对路径来指明即可。

例如:调用gzip将/etc 目录打包并压缩,然后将压缩文件保存到/tmp目录

# tar -zcf  /tmp/etc.tar.gz   /etc


解包和解压缩

用tar命令进行解包或解压缩语法:

tar  [选项]  打包或压缩文件名   [-C 目标目录]


例如:将etc.tar.gz 解压到当前目录下,执行命令后会在当前目录下创建一个名为 etc的目录,其中存放解压后的文件, 

“-x”选项表示解开 “.tar”格式的包文件

# tar -zxf  etc.tar.gz


例如:将etc.tar.bz2解压到/tmp目录中, “-C” 选项表示指定解压后文件存放的目标位置(大写),解压后会生成目录/tmp/etc

# tar -jxf  etc.bz2 -C  /tmp
# ll -d /tmp/etc


使用tar命令解压时,也可以不指定调用哪种压缩工具,系统会分析压缩文件的格式,自动调用相应的压缩工具进行解压。

例如:将etc.tar.xz 解压到/var目录中

# tar -xf  etc.tar.xz  -C  /var
# ll -d  /var/etc


通过“-t”选项可以在不解压的情况下查看压缩文件内部都包含哪些内容

# tar -tf etc.tar.bz2  | more

打包 压缩

读书和赚钱都是一个人最好的修行,前者使人不惑,后者使人不屈,二者结合,便可不困于世,不流于俗

评论

^