6.1-6.4gzip压缩工具
find命令复习,-exec后跟命令,此处>>为追加重定向后面不要忘了 ;
file 1.txt.gz 查看具体信息
zcat 1.txt.gz 查看压缩文件内容
gzip -d 或 unzip 解压缩
gzip -c 1.txt > /root/1.txt.gz 原文件不覆盖,压缩成新文件
gzip -d -c 1.txt.gz > /root/1.txt 解压缩时,压缩文件保存不覆盖
上面的gzip -d 和gunzip 一样都是解压缩
bzip2压缩工具,压缩更狠,和gzip基本相同
xz压缩工具,用的并不多都相似,在打包压缩时会出现.tar.xz
zip压缩工具
支持压缩目录 需要加上 zip -r
unzip解压可以指定目录 -d 不能更改压缩后的名字只能放在其目录下
tar打包工具
打包解包会覆盖原文件
tar -tf 查看包列表
--exclude 过滤指定文件不打包,-f后面先跟打包后文件名
打包并压缩
tar命令的常用选项如下表所示:
选项 |
选项 |
作用 |
-c |
--create |
创建压缩文件 |
-x |
--extract, --get |
解压文件 |
-f |
--file |
指定文件名 |
-v |
--verbose |
可视化 |
所以解压普通的tar文件命令就是:
tar –xvf file.tar
-x表示解压
tar可调用的压缩程序
选项 |
压缩格式 |
压缩程序 |
-z |
.gz |
gzip |
-j |
.bz2 |
bzip2 |
-J |
.xz |
xz |
当看到tar.gz后缀的压缩包,使用-z选项调用gzip程序解压,
当看到tar.bz2后缀的压缩包,使用-j选项调用bzip2程序解压。
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压tar.bz2
tar –xJvf file.tar.xz //解压tar.xz
-a选项可以根据后缀名自动选择调用相应的压缩程序,所以上面的3种情况可以直接使用:
$ tar -xavf file.tar.xxx //解压tar.xxx | 万能解压命令
解压到指定的目录
通过查看帮助发现了一个新选项-C --directory=DIR 改变目录DIR。假设我们要把某文件解压到test目录,在前面的基础上加上-C选项即可:
$ tar -xavf file.tar.gz -C ./test/ //解压gzip文件到指定目录
$ unzip file.zip //解压zip
$ unzip file.zip -d ./test //解压zip文件到指定目录
习题
1. gzip, bzip2 能否直接压缩目录呢?
不能直接压缩目录
2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令。
gzip 1.txt
gzip -d 1.txt.gz
bzip2 1.txt
bzip2 -d 1.txt.bz2
3. tar 在打包的时候,如果想排除多个文件或者目录如何操作?
tar cvf 123.tar --exclude a.txt --exclude b.txt 123/
4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf 1.tar.gz 1.txt 2.txt ?
不加 - 一样没有问题
5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包?
tar zcvf 1.tar.gz 1
tar zxvf 1.tar.gz
tar jcvf 1.tar.bz2 1
tar jxvf 1.tar.bz2
6. 找一个大点的文件,使用tar 分别把这个文件打成 .tar.gz和.tar.bz2 压缩包,比较一下哪个包会更小,从而得出结论,是gzip压缩效果好还是bzip2压缩效果好?
理论上.tar.bz2的压缩包小一些,但个别时候,有相反的情况。但大多时候bzip2压缩效果好。
7. 使用tar打包并压缩的时候,默认压缩级别为几? 想一想如何能够改变压缩级别呢?(提示,tar本身没有这个功能哦,可以尝试拆分打包和压缩)
tar打包压缩时,是按照gzip和bzip2的默认压缩级别来的,gzip工具默认压缩级别为6,bzip2默认压缩级别为9.
改变默认压缩级别可以这样来做,首先tar打包,然后再使用gzip或者bzip2压缩工具来压缩,压缩的时候指定压缩级别。如: tar cvf 1.tar 123/; gzip -2 1.tar