第六章笔记

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万个,需要4k=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

posted @ 2018-08-09 11:10  Linux操作系统爱好者  阅读(100)  评论(0)    收藏  举报