• 文件与文件系统的解压缩


    书本第八章讲的是linux磁盘与文件系统管理,讲了一堆我不知所云的东西,真的是生涩难懂又没有趣味性,

    so,我快速翻到了第九章:文件与文件系统的压缩与打包!!!

    1.文件压缩的原理

    计算机系统中都是使用byte单位来计量文件容量,但事实上,计算机最小的计量单位应该是bit,1 byte = 8bit

    所以每个byte中会有8个格子,下面以"桔"字作为例子,这个字的ASCII值为 u6854,进一步转换为二进制:

    01011100  01110101  00110110  00111000  00110101  00110100

    看到这里,有人可能就说了,这不对啊,4转化为二进制不是应该为 00000100么,上面怎么是00110100?请看图

    ASCII是现今最通用的单字节编码系统,所以,所有的文字都将通过ASCII的规范转换成二进制存入计算机。

    我们再来看单个字节,你会发现,每个字节都是由8个bit位组成的,但是有的bit位上却是0,也就是“空的”。于是

    工程师就利用一些复杂的计算方式,将这些没有使用到的空间“丢”出来,使得文件占用空间变小,这,就是压缩技术!

    等到需要使用文件的时候,再通过算法将文件还原成原本的样子,这就是“解压缩”!

    而有的压缩技术很特别,它是将重复的数据进行统计记录的,如果你的数据时100个1,111111111111...那么该压缩技术

    hi记录为“100个1”,而不是真的100个1的位存在,这样效率就更高了。

    2.linux常见的压缩命令

    linux上常见的压缩命令就是gzip和bzip2了(都是由GNU开发的),但是这些命令一次只能针对一个文件来压缩与解压

    缩,这样的话,每次压缩和解压缩都需要一堆文件,岂不是很烦人?后来就有了打包软件tar,但是它并没有压缩功能,

    它仅仅能够打包,后来GNU将tar和压缩的功能结合在了一起,如此一来使用者就能更方便地压缩与打包了。

    3.compress压缩命令

    这个压缩命令很老了,大概只有很老的UNIX机器上面还会找到这个软件,我所安装的Centos7上就没有这款压缩软件

    虽然很老,老到可以不用学习了,但是知识点还是要了解的,那就安装一下吧,敲下命令安装软件:yum install ncompress

    下面开始压缩一个文件:compress [options] 文件/目录

    -c                                       //将压缩数据输出到屏幕
    -r                                       //连同目录下的文件一同压缩
    -v                                       //可以显示压缩后的文件信息,以及文件名变化

    注意:centos7上不要轻易尝试compress -c 命令,不要问我为什么,我已经在重装虚拟机了,如果有解救的方

    案烦请告知,谢谢。

    解压的命令是:uncompress 文件.Z

    如上的压缩解压,是不会保留源文件的,如果有需要要对源文件进行一个压缩的备份呢?

    使用命令:compress -v text.txt >text.txt.demo.Z

    4.gzip命令

    gzip命令可以说是应用最广的压缩命令了,可以解开大多数软件压缩的文件,gzip压缩成的新文件名为*.gz

    命令是:gzip [options] 文件名        

    -c                               //将压缩的数据输出到屏幕
    -d                               //解压
    -t                               //检验压缩文件的一致性,看看文件有无错误
    -v                               //显示压缩比等信息
    -#                               //压缩等级,默认-6,-1最快压缩比差,-9最慢

    zcat 文件名.gz   可以用来读取压缩文件,屏幕上显示解压后的文件内容。

    5.bzip2命令

    为了取代gzip并提供更佳的压缩比,命令和gzip相似(下面只列出新增的命令参数):bzip2 [options] 文件名

    -k                               //保留源文件,新建压缩文件
    -z                               //压缩的参数

    bzcat 文件名.bz2    可以用来读取压缩文件,屏幕上显示解压后的文件内容。

    6.tar打包(参数很多)

    -j                             //通过bzip2的支持进行压缩/解压缩,此时文件名最好是*.tar.bz2
    -z                             //通过gzip的支持进行压缩/解压缩,此时文件名最好是*.tar.gz
    
    
    -c                             //新建打包文件(打包)
    -t                             //查看打包文件的内容有哪些(查看)
    -x                             //解压打包文件(解压)
    
    
    -v                             //将正在处理的文件名显示出来(压缩和解压过程中)
    -f filename.tar.bz2            //打包域压缩时的目标文件
    -C //在特定目录解压

    将当前目录下的02这个目录压缩成了02.tar.gz

     

    查看压缩文件007里面有哪些(源)文件,注意这个-f filename   一定要分开,压缩的时候可以不分(建议也分开写)

    其实也可以用绝对路径来写:

    至于解压:

    上面加上-C 解压到指定目录,不加的话解压到当前目录

    如果只想解压打包文件里面的某一个文件的话,先查找要解压的文件的正确名字(grep条件用于选取关键字):

    tar -ztvf 02.tar.gz |grep'01'

    (P257)

    7.后续

    后续还有完整备份工具:dump、restore;

    以及光盘写入工具、刻录工具,以及其他压缩备份工具的介绍,暂且不做实际操作以及记录,以后有实际需求

    的时候再仔细探讨。

  • 相关阅读:
    邓亚萍:我是如何学英语的(一种学习方法)
    qemu-nbd方式挂载qcow2镜像
    jquery 手机触摸事件
    用纯CSS创建一个三角形
    什么是闭包(closure),为什么要用它?
    javascript创建对象的几种方式
    如何垂直居中div?面试经常问到
    网页布局——左侧固定,右侧自适应
    python性能:不要使用 key in list 判断key是否在list里
    python实现的跳点寻路算法(JPS)
  • 原文地址:https://www.cnblogs.com/eco-just/p/9551958.html
Copyright © 2020-2023  润新知