18.文档的压缩和打包

四周第四次课(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 \;

mark
mark

  • 用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值