Linux命令3

压缩

压缩是对提升数据传输效率,降低传输宽带,管理备份数据都有重要作用

gzip

gzip只能对普通文件进行压缩和解压,对于文件夹,符号链接是不支持的

如果你想把多个文件一起压缩并打包,gzip自身是办不到的,需要和tar帮助完成

Linux命令3_第1张图片
如果想在压缩后保留原文件,可以使用-c选项,-c:让gzip将压缩的内容输出到标准输出,而非写入文件Linux命令3_第2张图片

和tar结合

  • 有几个概念,“打包/拆包”,“压缩/解压缩”有什么区别?

    • 搬家时每一床棉被都抽成真空,这叫压缩。把好几床抽真空的棉被用绳子捆绑起来,叫打包
    • 东西搬到新家后,把绳子解开,这叫拆包。把每床棉被舒展开,这叫解压缩
    • 如果不抽真空,只是简单地用绳子捆绑起来,用tar
    • 只有一床棉被抽真空,gzip
    • 好多床棉被,要抽真空,要捆起来,tar和gzip结合起来使用
  • 拆包解压

    • 解压拆包使用tar -xzvf
    • 当我们看到后缀是.tar.gz或者.tgz时,一定要知道这个是利用gzip压缩的打包文件,对于这类文件,我们可以通过gzip来解压的
    • -x
      • 表示要进行拆包动作
    • -z
      • 表示用gzip进行压缩或者解压缩
      • 如果同时使用了-x,那么就表示解压
      • 如果使用了-c,表示压缩
    • -v
      • 拆包过程中直播整个过程,把已经拆包的文件显示出来
    • -f
      • 表示指定要拆包的文件
      • 注意,这个选项一定要放在各个选项的最后,也就是要和所制定的文件名挨得最近
  • 打包压缩

    • tar -czvf
      • -c
        • 表示亚进用gzip进行压缩或者解压缩行打包动作
      • -z
        • 使用gzip进行压缩或解压缩
      • -v
        • 在打包过程中直播整个过程,把已打包的文件显示出来
      • -f
        • 表示指定要打包的文件,完全可以指定多个,文件夹和文件都可以
  • 不想解压只想看看里面有什么

    • tar -ztvf
      • 少了-x选项:因为我们并不想实际拆包
      • 多了-t选项,作用:列出打包文件中的内容
  • 有针对性的解压某个文件

    • 例如我们直到在curl软件包中有一个http.c文件,我们想提取出这个文件看看他的源码,但是又不想把这个软件压缩包全部解压,怎么做?
    • 在原来拆包解压命令后面直接加上要提取的文件全路径就好了
  • 压缩速度和压缩强度

    • 有些人追求压缩的速度,希望快点完成压缩,有的却追求压缩的强度,希望把东西压缩的越小越好
    数字级别 含义
    1 压缩速度最快,强度不高(一步到位往往只求的是快而不是精致程度)
    2
    3
    4
    5
    6 默认情况下
    7
    8
    9 压缩强度最高,速度较慢
bzip2

bzip2和bunzip2是一个东西?

bzip2是用来压缩文件的

bunzip2是用来解压缩文件的

  • 但是bzip2和bunzip2在Linux中是指向完全一样的程序

    • 如果你在Rehat/Fedora/CentOS下,你会发现bunzip2是bzip2的一个符号链接
    • 如果你咋Debian/Ubuntu下工作,你会发现bunzip2和bzip2具有相同的inode节点,即两者指向同一个程序
      • ![2019-01-27 13-19-24 的屏幕截图](/home/lala/图片/2019-01-27 13-19-24 的屏幕截图.png)
    • bzip2只服务于那些“要压缩的文件”,bunzip2只服务于那些“要解压缩的文件”
  • 一个程序改了名字会有不同的行为?

    • 通过阅读bzip2软件包的源代码,我们发现

      • 默认情况下,命令的工作模式是OM_Z,即压缩模式 opMode=OM_Z

      • 如果程序的名字中含有unzip或UNZIP,那么就将命令的工作模式设置为OM_UNZ,即解压模式

        if((strstr(progName,"unzip")!=0)||(strstr(progName,"UNZIP")!=0))
        opMode=OM_UNZ;
        

解压一个.tar.bz2文件

tar -xjvf

  • -j:特质采用bzip2方式进行解压缩

打包并压缩

tar -cjvf

现在tar命令已经很智能了,我们完全不需要指定解压缩方式,tar就会根据文件后缀来自动采用匹配的解压方式

  • 对单个文件的压缩和解压
    *Linux命令3_第3张图片
  • 处理多个文件
    • Linux命令3_第4张图片
zip命令

zip支持对文件,文件夹进行压缩

zip和gzip,bzip2有个明显的不同就是压缩过程中会保留原始文件

-r:递归参数中指定的文件夹
Linux命令3_第5张图片

-d:指定解压缩的目标路径
Linux命令3_第6张图片

-v:不想解压缩,只想看看里面有什么
Linux命令3_第7张图片

-t:下载了一个压缩文件,想验证这个压缩文件是否下载完全了
Linux命令3_第8张图片

能在zip文件中删除文件

有时候我们的工程师在压缩好zip文件后,发现里面有几个文件并不需要压缩进去,多余的文件占用了空间,但是我们解压后再压缩的话,不仅耗费CPU资源和磁盘空间,还要由专人跟进等待和操作

-d

zip .zip -d 文件名(要删除的文件名)

dd 用来读取设备,文件中的内容,并原封不动的复制到指定位置

device driver的缩写“Linux世界中的搬运工“

当我们dd命令读取/dev/null文件时就可以创造出空洞文件,如果你的磁盘足够大,你可以创造出更大的空洞

备份磁盘并恢复

现在主流的主流硬盘已经是SATA接口的,下面我们要备份的是dev/sda,他就是块SATA盘

dd if=/dev/sda of=/root/sda.img

这个命令将sda盘备份到文件/root/sda.img中去,通过这个我们已经得到了sda.img文件,他就是已经备份好了的磁盘映像文件,里面存储着/dev/sda整块硬盘的内容

  • if=文件名
    • 指定输入文件名或者设备名,如果省略这句话则表示从标准输入读取。
  • of=文件名
    • 指定输出文件名或设备名,如果省略这句话则表示写到标准输出
  • 如果/dev/sda硬盘真的出现了故障,我们就可以把曾经备份的sda.img复制到另一台电脑上,并将其恢复到指定的sdb盘中dd if=/root/sda.img of=/dev/sdb
    • 如果把目标硬盘直接连接到我们现在的电脑上,并让系统识别到这块新硬盘,例如识别成/dev/sdc,那么我们可以直接使用dd命令将sda盘复制到sdc中去,这种用法既可以用来整盘备份,也可以用来快速复制系统环境。

你可能感兴趣的:(没有写完的,Linux)