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