一、压缩技术解密
https://www.jianshu.com/p/7db19fbf8b11
- 目前计算机系统中都是用bytes(字节)单位来计量
- 事实上计算机最小的计量单位是bits(位)
- 1byte=8 bits
- 假设byte可以看成底下到模样
1 0 1 1 1 0 1 0
5.8个空格就是8个位,而每个空格可以是0或1,现在假设我们只存入了一个1,那会剩余到7个空位,默认情况下这7个空位无法在写入数据。
6.但压缩技术就是把这些没用到到空间提出来,以让档案占用到空间变小
二、常见压缩文件的扩展名
Linux 系统不以扩展名为文件类型识别的依据,这里的扩展名只是让用户易于分辨。
*.Z compress 程序压缩的文件;
*.zip zip 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.xz xz 程序压缩的文件;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz tar 程序打包的文件,其中并且经过 xz 的压缩
常见命令工具
gzip, bzip2 以及 xz ,这些都只能对单个文件进行压缩,不能操作目录。
tar
可以对一个到多个文件或者一个目录进行打包成一个单一的文件,但单独使用 tar
命令时,只是打包,不压缩。
后来,GNU 计划中,将整个 tar 与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能!
gzip
gzip 压缩解压单个文件
压缩文件后,自动删除源文件, 自动添加.gz
为扩展名
解压文件后,自动删除原压缩文件
gzip [-vd] file
选项和参数
-v 压缩时候显示压缩比
-d 解压
cp /etc/services /tmp
cd /tmp
压缩
gzip -v services
查看压缩文件的内容
zcat services.gz
搜索压缩文件的关键字位置
zgrep blp5 services.gz
浏览压缩文件
zless services.gz
解压
gzip services.gz
压缩文件并保留源文件
gzip -c services > services.gz
bzip2
更好的压缩比,但是会占用相对多一些的时间
用法几乎和 gzip 一样
[dmtsai@study ~]$ bzip2 [-cdkzv#] 文件名
[dmtsai@study ~]$ bzcat 文件名.bz2
选项与参数:
-c :将压缩的过程产生的数据输出到屏幕上!
-d :解压缩的参数
-k :保留原始文件,而不会删除原始的文件喔!
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
示例
压缩
bzip2 -v services
查看压缩文件内容
bzcat services.bg
bzless services.bz2
解压
bzat -d services.bz2
xz 扩展
更高压缩比,相应的更长时间的耗费。
和前两个几乎一样的用法
xz --help
tar
通用选项
-c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)
-t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
只打包,不压缩
创建
tar -cvf 创建后的文件名.tar 文档1 文档2
查看包内的文件列表
tar -tf 创建后的文件名.tar
解包到当前位置
tar -xf 创建后的文件名.tar
解包到指定位置
tar -xf 创建后的文件名.tar -C /tmp
打包后进行压缩
可以使用的选项
-z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz
-j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2
-J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz
以上 3 个 选项互斥
特别的
-p(小写) :保留备份数据的原本权限与属性,常用于备份重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
示例: 备份系统的配置文件,并且保留源文件的权限和属性信息
time tar -zpcv -f etc.tar.gz /etc
time
命令可以计算某个程序执行的时间
查看
查看压缩包的文件列表
tar -tf etc.tar.gz
解压
解压压缩包中的某一个文件
tar -xf etc.tar.gz etc/sysctl.conf_bk
解压到指定目录
tar -xf etc.tar.gz -C /tmp
压缩的时候排除文档
打包压缩的时候可以排除一个或者多个文件或者目录
排除一个文件
tar -jcv -f t.tar.bz2 d1 d2 --exclude=s1
排除多个文件
tar -jcv -f t.tar.bz2 d1 d2 --exclude={s1,s2}
目录也可以
tar -jcv -f t.tar.bz2 d1 d2 --exclude=d1