常用压缩工具原理:

    因为1byte=8bit,一个字节等于8位二进制数,所以每个byte当中会有8个空格,而每个空格可以是0,1。如此以来我存储一个字符1,1会在最右边占据一个bit,而其它7个bit将会被自动被填上0。其实那7个bit应该是空的。为了满足我们操作系统对数据的访问,所以会将该数据转为byte的形态来记录。压缩即:利用一些复杂的计算方式,将没有使用到的空间丢出去,以让文件占用的空间变小。

    另外一种方式:将重复的数据进行统计记录,例如你存储100个1,那么压缩技术会存储100个1,而不是真有100个1的位存在。这样也能够精简文件记录的容量。


常用压缩工具:

    Compress:这个压缩命令是非常老旧的一款,大概只有在非常旧的unix机器上才能找到,所以在这里就不过多介绍啦。

    

    gzip,gunzip,zcat:

    gzip [-cdtv] 文件名

        -c:将压缩的工具输出到屏幕上,可通过数据流重定向处理;

        -d:解压缩的参数

        -t:可以用来检验压缩文件的一致性,看看文件有无错误

        -v:显示压缩过程的详细信息

        -#:压缩等级-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认为6


    gizp压缩文件后会默认删除原文件,-c重定向可以保留原文件到当前目录

wKiom1bqTjCDFmqQAABbpJ4Cq6M165.png


    gzip==gunzip,解压默认不保留压缩文件,通常情况下我不建议用gunzip因为有时候会与其他工具搞混

wKiom1bqUAqQYJ9ZAAAmcwEw6pI749.png

    zcat:可以查看压缩文件中的内容

wKioL1bqUJnivhXxAAARVUIB_1I411.png



    bzip2,bzcat,bzcat

    bzip2 [-cdkzv#]文件名

        -c:将压缩过程中产生的数据输出到屏幕上

        -d:解压缩的参数

        -k:保留原文件,而不会删除原始的文件

        -z:压缩的参数

        -v:可以显示出压缩过程详细信息

        -#:与gizp一样,都是计算压缩比的参数


    bzip2 + 文件 压缩默认删除原文件;

    bzcat + 压缩包 可以查看压缩文件中的数据

        wKiom1bqU8qw2PAdAAA3Spbyhr8243.png

    bzip2 -d 解压默认删除压缩文件

        wKiom1bqU_LA2n6RAAAiHCgHX9U534.png



    xz,unxz,xzcat

    xz [-dkv#]文件名

        -d:解压缩,效果等同于unxz

        -k:压缩保留原文件

        -v:显示压缩过程详细信息

        -#:同gizp可以设定压缩比,默认为6

    

       wKioL1bqVo_R1HsOAAAeX-VRJsI715.png

       wKiom1bqVgKigQScAABHu4m8T7U139.png

    


    tar归档工具:

    tar [-jzcv][-f 新建的文件名]filename

        -z:通过gizp的方式进行压缩/解压缩此文件名最好为*.gz

        -j:通过bzip2的方式进行压缩/解压缩此文件名最好为*.bz2

        -v:显示压缩/解压缩的过程

        -C:在解压过程中,可以使用-C将其存入指定的目录中

        -f:后面要接被处理的文件名。建议-f单独写一个参数

        -x:解压缩的功能,可以配合-C在特定目录中解开

        -t:查看打包文件的内容含有哪些文件名,重点查看文件名

        -c:新建打包文件,可搭配-v来查看过程中被打包的文件名

        -p:保留原文件权限与属性

        -P:保留绝对路径,允许备份数据中有根目录存在

    最简单的使用tar就只要记忆下面的方式即可:

    bzip2压缩:tar -jcv -f file.tar.bz2 file1 file2...

    bzip2解压:tar -jxv -f file.tar.bz2

    bzip2查看:tar -jtv -f file.tar.bz2

   解压重定向:tar -jxv -f file.tar.bz2 -C /tmp


    gz压缩:tar -zcv -f file.tar.gz file1 file2...

    gz解压:tar -zxv -f file.tar.gz

    gz查看:tar -ztv -f file.tar.gz

       

    

dd:

    功用:这个命令不只是制作一个文件而已。dd的最大功效在于“备份”。因为dd可以读取磁盘设备的内容(几乎是直接读取扇区),然后将整个设备备份成一个文件。

    

    格式:dd if="input file" of="output file" bs="block size" count="number"


范例一:将/etc/passwd 备份到 /tmp/passwd.back当中

dd if=/etc/passwd of=/tmp/passwd.back

范例二:将/dev/sda1的第一个扇区备份下来(注:第一扇区就是MBR扇区)

dd if=/dev/sda1 of=/tmp/mbr.back bs=512 count=1

范例三:找出你系统最小的那个分区,并且将它备份下来;(我的是/dev/sda1)

dd if=/dev/sda1 of=/tmp/sda1.back

   

    你可以说,tar可以用来备份关键数据,而dd则可以用来备份整块分区或整块磁盘,如果要将数据填回到文件系统当中,可能需要考虑到原本的文件系统才能成功。


实战练习:

        将/etc/sda1 完整的复制到另一个分区上,请使用你的系统上面未分区完毕的空间再新建一个与/dev/sda1差不多大小的分区(只能比sda1大不能比它小)然后将之进行完整复制

 分析:由于需要复制启动扇区的区块,所以使用cp或者tar这种命令是无法完成需求的。