- 6.1 压缩打包介绍 - 6.2 gzip压缩工具 - 6.3 bzip2压缩工具 - 6.4 xz压缩工具

简介:

- 6.1 压缩打包介绍

- 6.2 gzip压缩工具

- 6.3 bzip2压缩工具

- 6.4 xz压缩工具



# 6.1 压缩打包介绍


## 常见压缩文件

- Windows .rar .zip .7z

- Linux .zip,.gz,.bz2,.xz,

- .tar.gz,.tar.bz2,.taz.xz



## 6.2 gzip压缩工具


首先做一个准备工作,在/tmp/下创建一个d6z的目录,再用find命令查找/etc/目录下的带有字符conf的所有文件 把这些文件内容输出到 /tmp/目录下的一个文件里去,把这个文件叫做1.txt


```

[root@aminglinux-01 ~]# ls


111  1_heard.txt  1.txt~     234        3.txt  anaconda-ks.cfg.1

123  1_sorft.txt  1.txt.bak  2.txt.bak  4.txt  biji.txt


[root@aminglinux-01 ~]# cd /tmp/


[root@aminglinux-01 tmp]# ls


1.txt      aming.111  passwd.sh

1.txt.bak  aming2     systemd-private-0e3d6e7faed94f9397845efbc07a6139-vmtoolsd.service-b9Ef5b

aming      fstab      xxx.conf

[root@aminglinux-01 tmp]# mkdir d6z

[root@aminglinux-01 tmp]# cd d6z

[root@aminglinux-01 d6z]# ls

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf"

/etc/lvm/lvm.conf

/etc/lvm/lvmlocal.conf

/etc/resolv.conf

/etc/pki/ca-trust/ca-legacy.conf

/etc/yum/pluginconf.d/fastestmirror.conf

/etc/yum/pluginconf.d/langpacks.conf

/etc/yum/protected.d/systemd.conf

/etc/yum/version-groups.conf

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >> 1.txt \;



[root@aminglinux-01 d6z]# ls

1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt

252K 1.txt

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >> 1.txt \;

[root@aminglinux-01 d6z]# du -sh 1.txt

704K 1.txt

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >> 1.txt \;

[root@aminglinux-01 d6z]# du -sh 1.txt

1.2M 1.txt

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >> 1.txt \;

[root@aminglinux-01 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >> 1.txt \;


命令du -sh 查看文件大小  命令wc -l 1.txt 查看文件的总行数

[root@aminglinux-01 d6z]# du -sh 1.txt

2.2M 1.txt

[root@aminglinux-01 d6z]# wc -l 1.txt

32360 1.txt

```

下面开始用giz去压缩它



```

[root@aminglinux-01 d6z]# du -sh 1.txt

2.2M 1.txt

这里的2.2M大小  有点不实际,因为前面252k 我们复制了5次,2.2M有点虚的空间

[root@aminglinux-01 d6z]# wc -l 1.txt

32360 1.txt

[root@aminglinux-01 d6z]# gzip 1.txt

[root@aminglinux-01 d6z]# ls

1.txt.gz

[root@aminglinux-01 d6z]# du -sh 1.txt.gz

332K 1.txt.gz

[root@aminglinux-01 d6z]# gzip -d 1.txt.gz

[root@aminglinux-01 d6z]# ls

1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt

1.3M 1.txt

 

压缩再解压后 发现文件大小才1.3M

压缩再解压缩可以把那些虚的空间给挤掉


[root@aminglinux-01 d6z]# du -sh 1.txt

1.3M 1.txt

[root@aminglinux-01 d6z]# wc -l 1.txt

32360 1.txt

还是这么多行


gzip 压缩有个选项gzip-数字

(1-9的级别,1级别最松散、随便 9级别最严谨 ,默认是6 不加-数字)


[root@aminglinux-01 d6z]# gzip -1 1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt.gz

392K 1.txt.gz

之前 332k,现在392k比之前的大一些,这是因为它的压缩级别可以调整,

这里是最低级别,级别(1-9)

压缩的最严谨,耗费cpu资源就多,压缩的不严谨 耗费cpu资源最少


### gzip 解压

1.  gzip -d 文件

2.  gunzip 文件


[root@aminglinux-01 d6z]# gzip -1 1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt.gz

392K 1.txt.gz

[root@aminglinux-01 d6z]# gunzip 1.txt.gz

[root@aminglinux-01 d6z]# ls

1.txt



再来做一个最严谨的压缩 9级别的压缩,来看下大小和6级别一样大


[root@aminglinux-01 d6z]# gzip -9 1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt.gz

332K 1.txt.gz

实际上压缩到一定的层次,基本上不会再往里压缩了 ,gzip 默认是6级别,取了一个适中的值


压缩完的文件怎么去查看呢?

不能再直接cat了,因为变成了一个二进制文件


[root@aminglinux-01 d6z]# ls

1.txt.gz

[root@aminglinux-01 d6z]# type 1.txt.gz

-bash: type: 1.txt.gz: 未找到

[root@aminglinux-01 d6z]# file 1.txt.gz

1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sun Aug  6 21:38:28 2017, max compression


[root@aminglinux-01 d6z]# zcat 1.txt.gz

这个命令可以查看它的内容,它实际上是先解压然后再cat

```

 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170806/221434158.png?imageslim)

 

 正常情况下1.txt 压缩变成1.txt.gz     1.txt没了,解压也是,1.txt。gz 解压变成1.txt  原来的文件 i.txt。gz 没了

 

 现在不想要这样,不想要原来的文件消失

 

 先解压

```

[root@aminglinux-01 d6z]# ls

1.txt.gz

[root@aminglinux-01 d6z]# gzip -d 1.txt.gz


再压缩1.txt  并且 把它重定向到 /tmp/1.txt.gz


[root@aminglinux-01 d6z]# gzip -c 1.txt > /tmp/1.txt.gz

[root@aminglinux-01 d6z]# ls

1.txt

[root@aminglinux-01 d6z]# ls /tmp/1.txt.gz

/tmp/1.txt.gz

[root@aminglinux-01 d6z]# file !$

file /tmp/1.txt.gz

/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sun Aug  6 21:38:28 2017


关于解压 也不想删除,直接给它指定一个地方


[root@aminglinux-01 d6z]# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/2.txt 


-d是解压缩,-c是指定一个路径在/tmp/2.txt 下

[root@aminglinux-01 d6z]# ls

1.txt  2.txt

[root@aminglinux-01 d6z]# wc -l 1.txt 2.txt

  32360 1.txt

  32360 2.txt

  64720 总用量

[root@aminglinux-01 d6z]# du -sh *.txt

1.3M 1.txt

1.3M 2.txt

[root@aminglinux-01 d6z]# 

```


- [x] gzip不能压缩目录这是它的一个特性


## 6.3 bzip2 压缩工具


![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170807/212456786.png?imageslim)


- bzip2比gzip更加狠一点(压缩的越狠,意味着耗费的资源就越多),默认的是9级别

```

[root@aminglinux-01 d6z]# ls

1.txt  2.txt

[root@aminglinux-01 d6z]# bzip2 1.txt

-bash: bzip2: 未找到命令

[root@aminglinux-01 d6z]# yum install -y bzip2


```

 没有bzip2的命令,用yum命令安装一下


```

完毕!

[root@aminglinux-01 d6z]# bzip2 1.txt

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt

[root@aminglinux-01 d6z]# du -sh 1.txt.bz2

160K 1.txt.bz2

现在只有160k,压缩的更狠

[root@aminglinux-01 d6z]# du -sh 1.txt.bz2

160K 1.txt.bz2

[root@aminglinux-01 d6z]# du -sh 2.txt

1.3M 2.txt


[root@aminglinux-01 d6z]# bzip2 -d 1.txt.bz2 

bzip2 -d 解压

[root@aminglinux-01 d6z]# bzip2 1.txt

[root@aminglinux-01 d6z]# bunzip2 1.txt.bz2

也可以支持 bunzip2 这个命令也可以解压

[root@aminglinux-01 d6z]# ls

1.txt  2.txt

[root@aminglinux-01 d6z]# 

```

也可以支持bzip2 -c 解压还不删除源文件

```

[root@aminglinux-01 d6z]# ls

1.txt  2.txt

[root@aminglinux-01 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2

[root@aminglinux-01 d6z]# du -sh /tmp/1.txt.bz2

160K /tmp/1.txt.bz2


[root@aminglinux-01 d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt

[root@aminglinux-01 d6z]# ls

1.txt  2.txt  3.txt

[root@aminglinux-01 d6z]# du -sh 3.txt

1.3M 3.txt


[root@aminglinux-01 d6z]# bzip2 -9 1.txt

[root@aminglinux-01 d6z]# du -sh 1.txt.bz2

160K 1.txt.bz2

[root@aminglinux-01 d6z]# 

bzip2默认级别就是9 所以不需要指定它


[root@aminglinux-01 d6z]# file 1.txt.bz2

1.txt.bz2: bzip2 compressed data, block size = 900k

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt

[root@aminglinux-01 d6z]# mv 1.txt.bz2 1.txt

如果把1.txt.gz 改名为 1.txt后

[root@aminglinux-01 d6z]# ls

1.txt  2.txt  3.txt

[root@aminglinux-01 d6z]# less 1.txt

"1.txt" may be a binary file.  See it anyway? 

用less查看不了,可以用file查看下 对比下1.txt  和  2.txt   显示 2.txt是个text文件

[root@aminglinux-01 d6z]# file 1.txt

1.txt: bzip2 compressed data, block size = 900k

[root@aminglinux-01 d6z]# file 2.txt

2.txt: UTF-8 Unicode text, with very long lines

[root@aminglinux-01 d6z]# less 2.txt

[root@aminglinux-01 d6z]# 

[root@aminglinux-01 d6z]# mv 1.txt 1.txt.bz2

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt

[root@aminglinux-01 d6z]# 


bzip2 也支持 bzcat 查看压缩文件

[root@aminglinux-01 d6z]# bzc

bzcat  bzcmp  

[root@aminglinux-01 d6z]# bzcat 1.txt.bz2

```

- [x] bzip2也不支持压缩目录



##  6.4  xz压缩工具


![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170807/222220143.png?imageslim)


xz压缩工具比 bzip2 压缩还要狠,一压缩变成60k了

```

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt

[root@aminglinux-01 d6z]# xz 2.txt

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt.xz  3.txt

[root@aminglinux-01 d6z]# du -sh 2.txt.xz

60K 2.txt.xz

[root@aminglinux-01 d6z]# du -sh 3.txt

1.3M 3.txt


[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt.xz  3.txt

[root@aminglinux-01 d6z]# xz -d 2.txt.xz

xz -d 解压  unxz 也可以解压

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt

[root@aminglinux-01 d6z]# xz 2.txt

[root@aminglinux-01 d6z]# unxz 2.txt.xz

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt


[root@aminglinux-01 d6z]# xz -c 2.txt > /tmp/2.txt.xz

压缩文件重定向到指定路径下,保留原来的文件


[root@aminglinux-01 d6z]# xz -d -c /tmp/2.txt.xz > ./4.txt

解压一个xz文件然后指定到当前目录改名为4.txt 并且保留原来的压缩文件

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  3.txt  4.txt

```

- [x] xz也不支持压缩目录


本文转自   ch71smas   51CTO博客,原文链接:http://blog.51cto.com/ch71smas/1959145


相关文章
|
网络协议 物联网 网络安全
为啥IPv6没有完全代替IPv4?
【10月更文挑战第29天】
504 2
为啥IPv6没有完全代替IPv4?
|
存储 数据挖掘 虚拟化
服务器数据恢复—Raid5阵列两块硬盘硬件故障掉线的数据恢复案例
服务器数据恢复环境: 一台某品牌存储设备上有一组由10块硬盘(9块数据盘+1块热备盘)组建的raid5阵列,上层部署vmware exsi虚拟化平台。 服务器故障: raid5阵列中两块硬盘对应的指示灯亮黄灯掉线。硬盘序列号无法读取,通过SAS扩展卡也无法读取。
|
9月前
|
算法 C++ 容器
模拟实现c++中的list模版
模拟实现c++中的list模版
|
编解码 数据可视化 定位技术
Android平台GB28181记录仪在铁路可视化巡检应用
GB28181记录仪在铁路可视化巡检中,集成实时音视频采集、位置上报、语音通信与无线传输技术,确保巡检高效准确。它能实时记录巡检细节,支持高清画质,并通过北斗/GPS实现精确位置追踪。记录仪兼容多种视频与音频格式,具备音量调节与编码参数配置功能,支持横竖屏及后台服务推流。此外,它还能添加动态水印,确保数据完整性,并允许指挥中心远程下载与回放历史视频,全面满足铁路巡检需求。
257 2
|
数据采集 数据可视化 Java
分享66个Python爬虫源码总有一个是你想要的
分享66个Python爬虫源码总有一个是你想要的
982 1
|
存储 安全 区块链
区块链与游戏:颠覆传统的数字娱乐新纪元
**区块链技术颠覆游戏行业,赋予玩家真实所有权,增强资产安全与经济系统创新。去中心化、不可篡改的特性确保公平性,智能合约驱动新盈利模式。虽有技术复杂性与扩展性挑战,但未来区块链游戏有望带来更丰富、安全、公平的体验,推动行业持续革新。**
区块链与游戏:颠覆传统的数字娱乐新纪元
|
Python
【Leetcode刷题Python】224. 基本计算器
LeetCode上题目“224. 基本计算器”的Python解决方案,通过使用栈来解析和计算包含加减运算及括号的算术表达式。
122 1
|
数据库 Python
Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)
Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)
401 0
|
存储 传感器 边缘计算
物联网体系架构解析:感知、通信与智能的融合
本篇深入剖析了物联网体系架构的关键要素,围绕感知、通信与应用层,以及边缘计算和云计算的角色进行了详细探讨。在感知层,各种传感器、执行器和物理设备的作用被阐述,它们负责采集环境数据和执行操作。传输层则负责数据传输和通信,确保感知层数据能够流畅传送。而应用层是物联网的最终目标,集成了各类应用和服务,通过分析传输层数据来实现智能化决策和控制。
1459 0
|
前端开发 JavaScript 测试技术
前端国际化辅助工具——自动替换中文并翻译
前端国际化辅助工具——自动替换中文并翻译
935 0