四周第四次课(1月5日)
6.1 压缩打包介绍
6.2 gzip压缩工具
6.3 bzip2压缩工具
6.4 xz压缩工具
四周第五次课(1月6日)
6.5 zip压缩工具
6.6 tar打包
6.7 打包并压缩
常见压缩文件
Windows .rar .zip .7z
Linux .zip,.gz,.bz2,.xz,.tar.gz,.tar.bz2,.tar.xz
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
现在我们开始准备练习,首先在在/tmp/下面创建一个目录,取名为d6z,第六章
[root@xavi-002 ~]# cd /tmp/
[root@xavi-002 tmp]# ls
1.txt passwd.sh
2.txt systemd-private-0068056e90c84dd2b56a5b9a8f1824ad-cups.service-01ty2L
fstab systemd-private-0068056e90c84dd2b56a5b9a8f1824ad-vmtoolsd.service-YZRyDS
newdisk xxx.conf
[root@xavi-002 tmp]# mkdir d6z
[root@xavi-002 tmp]# cd d6z/
接下来我们还要找一些大的文件,把/etc/下所有的conf文件
[root@xavi-002 d6z]# find /etc/ -type f -name "*conf"
[root@xavi-002 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
- 用wc命令确认文件的字数
[root@xavi-002 d6z]# wc -l 1.txt
55668 1.txt
- gzip 压缩,gzip-d 解压缩,解压缩之后比压缩前小,但字数是不变的
[root@xavi-002 d6z]# gzip 1.txt
[root@xavi-002 d6z]# ls
1.txt.gz
[root@xavi-002 d6z]# du -sh 1.txt.gz
508K 1.txt.gz
[root@xavi-002 d6z]# gzip -d 1.txt.gz
[root@xavi-002 d6z]# ls
1.txt
[root@xavi-002 d6z]# du -sh 1.txt
1.9M 1.txt
[root@xavi-002 d6z]# wc -l 1.txt
55668 1.txt
- gzip -#:表示压缩等级1~9,9最好效率最高,默认是6,等级高占用CPU资源也越大。
[root@xavi-002 d6z]# gzip -9 1.txt [root@xavi-002 d6z]# ls 1.txt.gz [root@xavi-002 d6z]# du -sh 1.txt.gz 504K 1.txt.gz
- 如何查找压缩文件,file,
- 用zcat查看压缩文件
[root@xavi-002 d6z]# file 1.txt.gz
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sat Jan 6 20:55:20 2018, max compression
- gzip -c 把压缩后的文件输出到标准输出设备,不去更动原始文件。
[root@xavi-002 d6z]# gzip -d 1.txt.gz //解压之前的gz文件
[root@xavi-002 d6z]# gzip -c 1.txt > /tmp/1.txt.gz //把它输出到/root下
[root@xavi-002 d6z]# ls
1.txt
[root@xavi-002 d6z]# ls /tmp/1.txt.gz
/tmp/1.txt.gz
[root@xavi-002 d6z]# file !$
file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sat Jan 6 20:55:20 2018
- gzip -d -c 解压缩后再输出
[root@xavi-002 d6z]# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/2.txt [root@xavi-002 d6z]# ls 1.txt 2.txt [root@xavi-002 d6z]# wc -l 1.txt 2.txt 55668 1.txt 55668 2.txt 111336 总用量 [root@xavi-002 d6z]# du -sh *.txt 1.9M 1.txt 1.9M 2.txt
==gzip不能压缩目录==
bzip2压缩工具
以下实例为压缩,bzip2也不能压缩目录
[root@xavi-002 d6z]# bzip2 1.txt
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt
[root@xavi-002 d6z]# du -sh 1.txt.bz2
368K 1.txt.bz2
[root@xavi-002 d6z]# du -sh 2.txt
1.9M 2.txt
- bzip2 -d 和bunzip2 都有解压缩功能
[root@xavi-002 d6z]# bzip2 -d 1.txt.bz2 [root@xavi-002 d6z]# ls 1.txt 2.txt [root@xavi-002 d6z]# du -sh 1.txt 1.9M 1.txt
[root@xavi-002 d6z]# bzip2 1.txt
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt
[root@xavi-002 d6z]# bunzip2 1.txt.bz2
[root@xavi-002 d6z]# ls
1.txt 2.txt
* bzip -c 把压缩后的文件输出到标准输出设备,不去更动原始文件。
[root@xavi-002 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@xavi-002 d6z]# du -sh /tmp/1.txt.bz2
368K /tmp/1.txt.bz2
[root@xavi-002 d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[root@xavi-002 d6z]# ls
1.txt 2.txt 3.txt
[root@xavi-002 d6z]# du -sh 3.txt
1.9M 3.txt
* bzip -#,也有压缩级别,默认是9
[root@xavi-002 d6z]# bzip2 -8 1.txt
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt 3.txt
[root@xavi-002 d6z]# du -sh 1.txt.bz2
400K 1.txt.bz2
* 同样,也可以file来查找压缩文件
这里有个误操作说明下
[root@xavi-002 d6z]# mv 1.txt.bz2 1.txt //w未填写完整,而是只转换了txt
[root@xavi-002 d6z]# less 1.txt
"1.txt" may be a binary file. See it anyway? //无法用less查看
[root@xavi-002 d6z]# file 1.txt
1.txt: bzip2 compressed data, block size = 800k
[root@xavi-002 d6z]# file 2.txt
2.txt: C source, ASCII text
[root@xavi-002 d6z]# mv 1.txt 1.txt.bz2 //改为正确的格式
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt 5.txt
* 同样,可以用bzcat查看bz2压缩文件
##### xz压缩工具
* 压缩功能
[root@xavi-002 d6z]# xz 2.txt
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt 4.txt 5.txt
[root@xavi-002 d6z]# du -sh 2.txt.xz
144K 2.txt.xz
[root@xavi-002 d6z]# du -sh 3.txt
1.9M 3.txt
* 解压缩,xz -c ,xz -d, xzcat等
[root@xavi-002 d6z]# xz -d 2.txt.xz
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt 5.txt
[root@xavi-002 d6z]# xz 2.txt
[root@xavi-002 d6z]# unxz 2.txt.xz
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt 5.txt
[root@xavi-002 d6z]# xz -c 2.txt > /tmp/2.txt.xz
[root@xavi-002 d6z]# xz -d -c /tmp/2.txt.xz > ./4.txt
##### Linux zip命令用于压缩文件。
zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。也可压缩目录
zip 1.txt.zip 1.txt
zip -r 123.zip 123/
unzip 1.txt.zip
unzip 123.zip -d /root/456/
unzip -l 123.zip
文件压举例:zip压缩效率一般
[root@xavi-002 d6z]# zip 2.txt.zip 2.txt
adding: 2.txt (deflated 74%)
[root@xavi-002 d6z]# ls
1.txt.bz2 2.txt 2.txt.zip 3.txt 4.txt 5.txt
[root@xavi-002 d6z]# du -sh 2.txt.zip
508K 2.txt.zip
* 同时压缩文件和目录,zip压缩之后原文件仍然存在
[root@xavi-002 d6z]# ls
1.txt 1.txt.bz2 2.txt 2.txt.zip 3.txt 4.txt 5.txt xavilinux
[root@xavi-002 d6z]# zip -r xavi001.zip 3.txt xavilinux
adding: 3.txt (deflated 74%)
adding: xavilinux/ (stored 0%)
adding: xavilinux/1/ (stored 0%)
adding: xavilinux/1/2/ (stored 0%)
adding: xavilinux/1/2/3/ (stored 0%)
adding: xavilinux/1.txt (stored 0%)
[root@xavi-002 d6z]# ls
1.txt 1.txt.bz2 2.txt 2.txt.zip 3.txt 4.txt 5.txt xavi001.zip xavilinux
* unzip解压缩,由于压缩是没有消除原文件(这是和gzip,bzip2,xz都不同的地方),这里会提示你是否要覆盖原文件
[root@xavi-002 d6z]# unzip xavi001.zip
Archive: xavi001.zip
replace 3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
error: invalid response [ y]
replace 3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: 3.txt
extracting: xavilinux/1.txt
* unzip ###.zip -d + 指定路径,压缩前后的名称是无法去更改的
[root@xavi-002 d6z]# mkdir test
[root@xavi-002 d6z]# unzip 2.txt.zip -d test/
Archive: 2.txt.zip
inflating: test/2.txt
* zip压缩工具没有类似cat的查看文件命令,只能要用zip -l 查看压缩目录下的文件列表
[root@xavi-002 d6z]# unzip -l xavi001.zip
Archive: xavi001.zip
Length Date Time Name
1955595 01-07-2018 10:27 3.txt
0 01-07-2018 10:28 xavilinux/
0 01-07-2018 10:26 xavilinux/1/
0 01-07-2018 10:26 xavilinux/1/2/
0 01-07-2018 10:26 xavilinux/1/2/3/
16 01-07-2018 10:28 xavilinux/1.txt
1955611 6 files
##### tar打包工具
100M的带宽,跑满了是也就是传输理论值是12.5M/S,但是传输的文件里面有文件有目录,传输过程就比较慢了,为了提升效率引入打包机制。
用法举例:
- [ ] tar -cvf 123.tar 123
- [ ] tar -cvf aming.tar 1.txt 123
- [ ] tar -xvf aming.tar
- [ ] tar -tf aming.tar
- [ ] tar -cvf aming.tar --exclude 1.txt --exclude 2 123
* tar -cvf c:creat,v-verbos可视化,f 是file制定备份文件,可文件与目录一同打包,打包后原文件不存在
[root@xavi-002 d6z]# tar -cvf xavilinux.tar xavilinux
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
[root@xavi-002 d6z]# ls
1.txt 2.txt 3.txt 5.txt xavi001.zip xavilinux.tar
1.txt.bz2
[root@xavi-002 d6z]# tar -cvf xavilinux.tar xavilinux 1.txt 2.txt
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
2.txt
* 解打包 tar -xvf, x即extract 从备份文件中还原文件,原来的打包文件仍然存在
[root@xavi-002 d6z]# tar -xvf xavilinux.tar
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
* tar -tf 查看备份文件包
[root@xavi-002 d6z]# tar -tf xavilinux.tar
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
2.txt
* tar -xvf #####.tar --exclude 目录 -exclude 文件,指定范本文件,其内含有一个或多个范本样式,让tar排除符合设置条件的文件。
[root@xavi-002 d6z]# tar -xvf xavilinux.tar
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
2.txt
[root@xavi-002 d6z]# tar -cvf xavi.tar --exclude 1 --exclude 1.txt
2.txt
[root@xavi-002 d6z]# tar -tf xavi.tar
2.txt //文件夹1和1.txt被过滤了
#### tar打包并压缩
- [ ] tar -zcvf 123.tar.gz 123 //gz文件
- [ ] tar -zxvf 123.tar.gz
- [ ] tar -jcvf 123.bz2 123 //bz2文件
- [ ] tar -jxvf 123.bz2
- [ ] tar -Jcvf 123.xz 123 //xz文件
- [ ] tar -Jxvf 123.xz
- [ ] tar -tf 123.bz2 / tar -tf 123.gz / tar -tf 123.xz
[root@xavi-002 d6z]# tar -zcvf xavilinux.tar.gz xavilinux 1.txt 3.txt
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
[root@xavi-002 d6z]# tar -jcvf xavilinux.tar.bz2 xavilinux 1.txt 3.txt
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
[root@xavi-002 d6z]# tar -Jcvf xavilinux.tar.xz xavilinux 1.txt 3.txt
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180107/34jd9DLF9H.png?imageslim)
*tar -tf 查看所有压缩包
[root@xavi-002 d6z]# tar -tf xavilinux.tar.gz
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
[root@xavi-002 d6z]# tar -tf xavilinux.tar.xz
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
[root@xavi-002 d6z]# tar -tf xavilinux.tar.bz2
xavilinux/
xavilinux/1/
xavilinux/1/2/
xavilinux/1/2/3/
xavilinux/1.txt
1.txt
3.txt
转载于:https://blog.51cto.com/12995218/2058235