文章目录
Linux文件系统的压缩与打包
背景
当对重要的大型文件进行备份时,由于数据量太大,会造成消耗大量的磁盘空间,文件系统的压缩技术就是为了解决这个问题,将文件进行压缩,可以将它的磁盘使用量降低、可以达到减小文件大小的效果
文件压缩原理
第一种:在系统中用byte来描述文件大小,但实际计算机的最小单位是bit,1byte=8bit,计算机二进制存储1时,会占据最右边的1bit,剩下的补0,为了满足操作系统访问数据的形式,这些数据转为byte来记录,压缩技术原理就是将这些补位为0的bit位省略达到减少文件大小的目的
![Linux文件压缩原理](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件压缩原理.2beksfdqgjdw.png)
第二种:将重复的数据进行统计记录,文件数据为"1111111111",在压缩时会被记录为"10个1",能够精简文件记录的容量
![Linux文件系统压缩2](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件系统压缩2.2jbj5vudt2s0.png)
文件压缩的根本原理就是将文件中没有被占用的空间通过压缩的技术"去掉",这样使得整个文件的容量下降,文件经过压缩之后是不能够被操作系统识别的,要使用这些被压缩后的文件数据就得进行解压缩
解压缩
解压缩:就是将压缩后的文件还原成未压缩前的文件数据
压缩比
压缩比:文件压缩前与压缩后所占用磁盘空间大小之比
Linux压缩命令
Linux文件经过压缩之后的文件扩展名通常为:.tar、.tar.gz、.tgz、.gz、.Z、.bz2
Linux系统支持的压缩命令非常多,不同的压缩命令对应着不同的压缩程序和技术,命令之间彼此无法相互压缩和解压缩文件
压缩文件扩展 | 对应的压缩程序 |
---|---|
.Z | compress程序压缩的文件 |
.gz | gzip程序压缩的文件 |
.bz2 | bzip2程序压缩的文件 |
.tar | tar程序打包的程序,并没有压缩过 |
.tar.gz | tar程序打包的程序,并经过gzip程序的压缩 |
.tar.bz2 | tar程序打包的程序,并经过bzip2的压缩 |
Linux上最常见的压缩命令就是gzip和bzip2,gzip是由GNU计划所开发出来的压缩技术,但这些压缩命令通常只能针对一个文件来压缩和解压,若对多个文件进行压缩,则需要打包命令tar,tar命令只有打包的作用,即将多个文件或目录"打包"成一个文件,tar并不 提供压缩的功能
Compress、uncompress
Compress命令是很老旧的压缩命令,对应的压缩程序为ncompress,现在一般Linux系统默认没有安装这个软件,使用之前则需要安装ncompress程序
压缩命令:compress [参数] 文件或目录
解压命令:uncompress 文件.z
参数:
-r:连同目录下的文件同时压缩
-c:将压缩数据输出到标准输出(屏幕)上
-v:可显示压缩文件后的文件信息以及压缩过程中文件名变化
gzip、zcat
gzip是应用最广的压缩命令,目前gzip可以解开compress、zip和gzip等软件程序所压缩的文件,gzip压缩后的压缩文件为.gz
压缩命令:gzip [参数] 文件名
查看压缩:zcat 文件名.gz
参数:
-c:将压缩的数据输出到屏幕上,可以通过数据流量定向来处理
-d:解压缩的参数
-t:可以用来检验压缩文件的一致性,看文件有无错误
-v:可以显示压缩比信息
-#:压缩等级,-1最快,但是压缩比最差,-9最慢,压缩比最好默认为-6
zcat会将解压后的内容显示在屏幕上
![Linux文件系统压缩gzip](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件系统压缩gzip.4x48zkf8dw80.png)
cat可以读取纯文本文件,那个zcat可以读取纯文件被压缩后的文件,gzip主要是用来替代compress程序,所以zcat可以读取compress和gzip压缩文件
bzip2、bzcat
bzip2是用来gzip并提供更好的压缩比
压缩命令:bzip2 [参数] 文件名
查看压缩:bzcat 文件名.bz2
参数:
-c:将压缩后的数据显示在屏幕上
-d:解压缩的参数
-k:保留原文件
-z:压缩的参数
-v:可以显示原文件/压缩文件的压缩比
-#:计算压缩比的参数
![Linux文件系统压缩bzip2](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件系统压缩bzip2.7f4lnnc10is0.png)
tar
tar为打包命令,将多个文件或目录打包成一个大文件的命令功能
tar [参数] filename
参数:
-c:新建打包文件,可搭配-v来查看过程中被打包的文件名
-t:查看打包文件的内容有哪些文件名
-x:解打包或解压缩的功能,特别留意-c、-t、-x不能同时出现在一串命令行中,即不能搭配使用
-j:通过bzip2的支持进行压缩/解压功能,此时最好文件名为.tar.bz2
-z:通过gzip的支持进行压缩/解压功能,此时最好文件名为.tar.gz
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f:后面接被处理的文件名
-C:这个参数用在解压时,若在特定目录进行解压,可以指定这个参数
![Linux文件系统压缩tar-bzip2](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件系统压缩tar-bzip2.17hzk0okk75s.png)
![Linux文件系统压缩targzip](https://cdn.jsdelivr.net/gh/babybeekeeper/pic_Hosting@master/20211218/Linux文件系统压缩targzip.6yfh8kii4r00.png)
dump
dump:可以针对整个文件系统进行备份,也可以针对目录进行备份
dump [-Suvj] [-level] [-f 备份文件] 待备份数据
dump -W
参数:
-S:仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕
-u:将这个备份时间记录在/etc/dumpdates文件中
-v:将dump文件过程显示出来
-level:dump运行等级,从-0~-9十个等级
-f:后面接备份产生的文件名
-W:列出在/etc/fstab里面具有dump设置的分区是否有备份过
备份数据为单一文件系统
备份数据为单一文件系统时,则该文件系统可以使用完整的dump功能,包括利用0~9的dump运行等级来备份,备份时可以使用挂载点或者设备文件名(/etc/sda等)来进行备份
备份数据为目录
当备份数据为目录并非独立的文件系统时,会有所限制:
- 所有的备份数据都必须在该目录下
- 仅支持level0,即仅支持完整备份
- 无法将备份时间记录文件
restore
备份文件就是在急用时可以恢复系统的重要数据,restore就是用来恢复备份
restore [参数] dumpfile
参数:
-t:用来查看dump起来的备份文件中含有什么重要数据
-C:可以将dump内的数据将实际的文件系统做比较
-r:将整个文件系统还原的一种模式,用在还原针对文件系统的dump备份
相关的各种模式不能混用
-f:后面接要处理的dump文件
总结
压缩命令为通过一些运算方法去将原来的文件进行压缩,以减少文件所占用的磁盘空间,压缩前后文佳所占的磁盘空间比值称为压缩比,不同的压缩命令对应着不同的压缩程序
赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love