第六章笔记
6.1 压缩打包介绍
6.2 gzip压缩工具
6.3 bzip2压缩工具
6.4 xz压缩工具
6.5 zip压缩工具
6.6 tar打包
6.7 打包并压缩
看下这个帖子: http://ask.apelearn.com/question/5435
6.1 压缩打包介绍
方便传输,空间大小,针对磁盘可以节省空间,传输时间段,带宽耗费小了
对公司来说服务器的文件经常下载,需要很大带宽,机房带宽是很贵的
如果连通家用100G 1000块钱,机房100G一年几万块钱
家用不规定,我们平时说的100G是下载100G上传不一定可能几十兆 ,机房的是规定的上传下载是一样的都是100G
常见压缩文件,
widows .rar .zip .7z
Linux .zip .gz .bz2 .xz .tar.gz .tar.bz2 .tar.xz
在widows 后缀名很有用,能用规定工具打开这个文件
Linux 文件名没有那么重要, .txt 的文档我们可以写成.exe也能打开它 ,单我们也要通过文件后缀名来区分文件(虽然可以设成其他后缀名不影响),通常我们还是按规定的约束方便大家识别
6.2 gzip压缩工具

gzip 直接跟文件名
[root@linux01 ~]# cd /tmp/ 到tmp目录
[root@linux01 tmp]# mkdir d6z 创建目录
[root@linux01 tmp]# cd d6z/ 到第六章目录
[root@linux01 d6z]# find /etc/ -type f -name '*.conf' 查找ETC下.conf 结尾的文件
[root@linux01 d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \; 把查到文件复制到1.TXT里
[root@linux01 d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \; 多运行几遍
[root@linux01 d6z]# du -sh 1.txt 大小
3.8M 1.txt
[root@linux01 d6z]# wc -l 1.txt 行数
65180 1.txt
[root@linux01 d6z]# gzip 1.txt
[root@linux01 d6z]# ls
1.txt.gz
[root@linux01 d6z]# du -sh 1.txt.gz
664K 1.txt.gz
[root@linux01 d6z]# gzip -d 1.txt.gz
[root@linux01 d6z]# ls
1.txt
[root@linux01 d6z]# du -sh 1.txt
2.5M 1.txt
是因为刚才有些虚空间所以才3.8G,压缩然后解压缩可以把虚的空间挤掉
[root@linux01 d6z]# wc -l 1.txt 行数和刚才一样
65180 1.txt
[root@linux01 d6z]# gzip -1 1.txt 可以后面加参数1-9 压缩级别,默认是6,也可以指定,1级别压缩的最不严谨,9最很耗费的CPU资源越大 ,
[root@linux01 d6z]# du -sh 1.txt.gz
784K 1.txt.gz
另外一种解压缩[root@linux01 d6z]# gunzip 1.txt.gz
[root@linux01 d6z]# gzip -9 1.txt
[root@linux01 d6z]# du -sh 1.txt.gz
664K 1.txt.gz 压缩到一定程度到极限了,即使加9参数 也变化不大
查看压缩文件
[root@linux01 d6z]# zcat 1.txt.gz
其实是先解压后查看的
[root@linux01 d6z]# ls
1.txt.gz
[root@linux01 d6z]# gzip -d 1.txt.gz 解压
[root@linux01 d6z]# ls
1.txt
[root@linux01 d6z]# gzip -c 1.txt > /tmp/1.txt.gz
[root@linux01 d6z]# ls
1.txt
[root@linux01 d6z]# ls /tmp/1.txt.gz
/tmp/1.txt.gz
[root@linux01 d6z]# file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Mon Aug 6 21:50:03 2018
[root@linux01 d6z]# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/2.txt 解压到指定目录
[root@linux01 d6z]# ls
1.txt 2.txt
[root@linux01 d6z]# wc -l 1.txt 2.txt
65180 1.txt
65180 2.txt
130360 总用量
有一点注意 gzip不能压缩目录
6.3 bzip2压缩工具

比gzip压缩更狠一点,当然他们压缩方式是不一样的,压缩越恨表示他们消耗CPU资源越多
[root@linux01 d6z]# bzip2 1.txt
-bash: bzip2: 未找到命令
[root@linux01 d6z]# yum install -y bzip2
[root@linux01 d6z]# bzip2 1.txt
[root@linux01 d6z]# du -sh 1.txt.bz2
264K 1.txt.bz2
[root@linux01 d6z]# bzip2 -d 1.txt.bz2 也是解压-d
[root@linux01 d6z]# bzip2 1.txt
[root@linux01 d6z]# bunzip2 1.txt.bz2 也是可以bunzip2解压
[root@linux01 d6z]# ls
1.txt 2.txt
也是不支持解压目录 ,也支持 -C
[root@linux01 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@linux01 d6z]# du -sh /tmp/1.txt.bz2
264K /tmp/1.txt.bz2
[root@linux01 d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[root@linux01 d6z]# ls
1.txt 2.txt 3.txt
[root@linux01 d6z]# du -sh 3.txt
2.5M 3.txt
[root@linux01 d6z]# bzip2 -9 1.txt 也有一个运行级别默认的是9
[root@linux01 d6z]# du -sh 1.txt.bz2
264K 1.txt.bz2
[root@linux01 d6z]# file 1.txt.bz2 也可以用file看文件信息
1.txt.bz2: bzip2 compressed data, block size = 900k
如果有人不规矩定义文件名字
[root@linux01 d6z]# mv 1.txt.bz2 1.txt
[root@linux01 d6z]# less 1.txt
"1.txt" may be a binary file. See it anyway?
root@linux01 d6z]# less 1.txt
"1.txt" may be a binary file. See it anyway?
我们可以file看是什么文件
[root@linux01 d6z]# file 1.txt
1.txt: bzip2 compressed data, block size = 900k
[root@linux01 d6z]# file 2.txt
2.txt: C source, UTF-8 Unicode text
[root@linux01 d6z]# mv 1.txt 1.txt.bz2
查看用
[root@linux01 d6z]# bzcat 1.txt.bz2
6.4 xz压缩工具

[root@linux01 d6z]# xz 2.txt
[root@linux01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt
[root@linux01 d6z]# du -sh 2.txt.xz
60K 2.txt.xz 压缩更狠,消耗CPU更多
[root@linux01 d6z]# xz -d 2.txt.xz 解压-d
[root@linux01 d6z]# xz 2.txt 压缩
[root@linux01 d6z]# unxz 2.txt.xz 解压的另外一种
[root@linux01 d6z]# ls
1.txt.bz2 2.txt 3.txt
[root@linux01 d6z]# xz -c 2.txt > /tmp/2.txt.xz 同样支持-c
[root@linux01 d6z]# xz -d -c /tmp/2.txt.xz > 4.txt 保留原来的压缩文件,压缩到指定的目录
[root@linux01 d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[root@linux01 d6z]# xz 2.txt
[root@linux01 d6z]# xzcat 2.txt.xz
6.5 zip压缩工具

前面几个压缩工具都不支持压缩目录
Linux默认不支持widow rar文件,需要安装一个工具
[root@linux01 d6z]# mkdir /tmp/zhang
[root@linux01 d6z]# cp -r /tmp/zhang .
[root@linux01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt 4.txt zhang
[root@linux01 d6z]# tree zhang/
zhang/
├── 88
├── 88.txt
├── 8.txt
└── touch
1 directory, 3 files
[root@linux01 d6z]# cp 4.txt zhang/88/
[root@linux01 d6z]# du -sh zhang/
7.5M zhang/
[root@linux01 d6z]# yum instll -y zip
[root@linux01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt 4.txt zhang
[root@linux01 d6z]# zip 3.txt.zip 3.txt
adding: 3.txt (deflated 74%)
[root@linux01 d6z]# du -sh 3.txt.zip
664K 3.txt.zip
我们说的压缩对比看文件的,看文件有的适合gz ,有的适合bzip
[root@linux01 d6z]# zip -r zhang.zip 4.txt zhang
adding: 4.txt (deflated 74%)
adding: zhang/ (stored 0%)
adding: zhang/touch (stored 0%)
adding: zhang/8.txt (deflated 74%)
adding: zhang/88/ (stored 0%)
adding: zhang/88/4.txt (deflated 74%)
adding: zhang/88.txt (deflated 74%)
[root@linux01 d6z]# ls 压缩完后文件不消失
1.txt.bz2 2.txt.xz 3.txt 3.txt.zip 4.txt zhang zhang.zip
[root@linux01 d6z]# du -sh zhang.zip
2.6M zhang.zip
[root@linux01 d6z]# du -sh zhang
7.5M zhang
[root@linux01 d6z]# yum install -y unzip 安装解压缩
因为之前没有删掉压缩前的文件,所以 现在来问是否覆盖
[root@linux01 d6z]# unzip zhang.zip
Archive: zhang.zip
replace 4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename:
A是全部选择YES
[root@linux01 d6z]# unzip zhang.zip -d test/ 只能指定路径不能指定名字
[root@linux01 d6z]# unzip -l zhang.zip 不能查看内容,只能查看列表。
Archive: zhang.zip
Length Date Time Name
--------- ---------- ----- ----
2586860 08-06-2018 22:58 4.txt
0 08-06-2018 23:07 zhang/
0 08-06-2018 23:05 zhang/touch
2586860 08-06-2018 23:06 zhang/8.txt
0 08-06-2018 23:09 zhang/88/
2586860 08-06-2018 23:09 zhang/88/4.txt
2586860 08-06-2018 23:07 zhang/88.txt
--------- -------
10347440 7 files
Archive: zhang.zip
inflating: test/4.txt
creating: test/zhang/
extracting: test/zhang/touch
inflating: test/zhang/8.txt
creating: test/zhang/88/
inflating: test/zhang/88/4.txt
inflating: test/zhang/88.txt
[root@linux01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt 3.txt.zip 4.txt test zhang zhang.zip
6.6 tar打包

两台服务器传文件 目录
如果太多文件需要整理出来,如果文件目录共100G,带宽也是100G,如果每秒传输10G
我们说的带宽一般是byte他和字节是对应关系的。 1G字节=8G网卡
100G网卡 其实是12.5兆/秒字节
100G文件传8秒钟,实际100G文件有很多目录文件,可能花1分钟,说明文件个数太多,一个文件传完再传另个,这样速度就慢了。 所以我们打包成一个大文件,更快的传输,对文件大小没太多的变化。
如果每个小文件都小于4K大小,如果有1万个,需要4万k=40G ,如果打包这些小文件 就会把文件块填满,可能小到10G
可以打包文件木
[root@linux01 ~]# cd /tmp/d6z
[root@linux01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt 3.txt.zip 4.txt test zhang zhang.zip
[root@linux01 d6z]# tar -cvf zhang.tar zhang/(/可加可不加)
zhang
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
其中c create v可视化,f 一定要有 V可是省略
[root@linux01 d6z]# tar -cf zhang.tar zhang/ 覆盖原来的然后不会显示出来
[root@linux01 d6z]# tar -xvf zhang.tar
zhang/
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
解包也会覆盖原来的文件然后不提示
[root@linux01 d6z]# tar -cvf xiao.tar 3.txt zhang
3.txt
zhang/
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
目录和文件一起打包
unzip,可以看压缩文件里面
[root@linux01 d6z]# tar -tf zhang.tar
zhang/
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
可以查看打包文件里面内容
[root@linux01 d6z]# tree zhang
zhang
├── 88
│ └── 4.txt
├── 88.txt
├── 8.txt
└── touch
1 directory, 4 files
[root@linux01 d6z]# tar -cvf zhang1.tar --exclude touch zhang
zhang/
zhang/88/
zhang/88/4.txt
zhang/8.txt
zhang/88.txt
除了touch 都打包了,同样可以加去除多个
[root@linux01 d6z]# touch 1.txt
[root@linux01 d6z]# ls
1.txt 2.txt.xz 3.txt.zip test zhang zhang.tar
1.txt.bz2 3.txt 4.txt xiao.tar zhang1.tar zhang.zip
[root@linux01 d6z]# tar -cvf zhang1.tar --exclude touch --exclude 1.txt zhang
zhang/
zhang/88/
zhang/88/4.txt
zhang/8.txt
zhang/88.txt
也可以
[root@linux01 d6z]# tar -cvf zhang1.tar --exclude touch --exclude "*.txt" zhang
zhang/
zhang/88/
6.7 打包并压缩

[root@linux01 d6z]# tar -czvf zhang.tar.gz zhang 1.txt 3.txt
zhang/
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
1.txt
3.txt
[root@linux01 d6z]# du -sh zhang.tar.gz
2.6M zhang.tar.gz
[root@linux01 d6z]# du -sh zhang 1.txt 3.txt 共10M
7.5M zhang
0 1.txt
2.5M 3.txt
[root@linux01 d6z]# tar -cjvf zhang.tar.bz2 zhang 1.txt 3.txt
zhang/
zhang/88/
zhang/88/4.txt
zhang/touch
zhang/8.txt
zhang/88.txt
1.txt
3.txt
[root@linux01 d6z]# du -sh zhang.tar.bz2 小了很多
1012K zhang.tar.bz2
[root@linux01 d6z]# du -sh zhang.tar.xz 这个更狠
64K zhang.tar.xz
[root@linux01 d6z]# tar -tf zhang.tar.gz
[root@linux01 d6z]# tar -tf zhang.tar.bz2
[root@linux01 d6z]# tar -tf zhang.tar.xz
[root@linux01 d6z]# tar -tf zhang.tar 都支持tar -tf

浙公网安备 33010602011771号