第九章、文件与文件系统的压缩与打包
最近升级日期:2009/08/20

大标题的图示重点回顾
  • 压缩命令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁碟容量。 压缩前与压缩后的文件所占用的磁碟容量比值, 就可以被称为是『压缩比』
  • 压缩的好处是可以减少磁碟容量的浪费,在 WWW 网站也可以利用文件压缩的技术来进行数据的传送,好让网站频宽的可利用率上升喔
  • 压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』
  • 常见的压缩命令有 gzip 与 bzip2 ,其中 bzip2 压缩比较之 gzip 还要更好,建议使用 bzip2 !
  • tar 可以用来进行文件打包,并可支持 gzip 或 bzip2 的压缩。
  • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查 询:tar -jtv -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
  • dump 命令可备份文件系统或单一目录
  • dump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level 0 为完整备份;
  • restore 命令可还原被 dump 建置的备份档;
  • 要创建光盘烧录数据时,可透过 mkisofs 命令来建置;
  • 可透过 cdrecord 来写入 CD 或 DVD 烧录机
  • dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁碟的 sector 表面数据
  • cpio 为相当优秀的备份命令,不过必须要搭配类似 find 命令来读入欲备份的档名数据,方可进行备份动作。

大标题的图示本章习题
(要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看)
  • 情境模拟题一:你想要让系统恢复到第八章情境模拟后的结果,亦即仅剩下 /dev/hdc6 以前的 partition, 本章练习产生的 partition 都需要恢复原状。因此 /dev/hdc8, /dev/hdc9 (在本章练习过程中产生的) 请将他删除!删除的方法同第八章的情境模拟题一所示。

  • 情境模拟题二:你想要逐时备份 /srv/myproject 这个目录内的数据,又担心每次备份的资讯太多, 因此想要使用 dump 的方式来逐一备份数据到 /backups 这个目录下。该如何处理?

    • 目标:了解到 dump 以及各个不同 level 的作用;
    • 前提:被备份的数据为单一 partition ,亦即本例中的 /srv/myproject
    • 需求:/srv/myproject 为单一 filesystem ,且在 /etc/fstab 内此挂载点的 dump 栏位为 1

    实际处理的方法其实还挺简单的!我们可以这样做看看:

    1. 先替该目录制作一些数据,亦即复制一些东西过去吧!
      cp -a /etc /boot /srv/myproject

    2. 开始进行 dump ,记得,一开始是使用 level 0 的完整备份喔!
      mkdir /backups
      dump -0u -j -f /backups/myproject.dump /srv/myproject

      上面多了个 -j 的选项,目的是为了要进行压缩,减少备份的数据量。

    3. 尝试将 /srv/myproject 这个文件系统加大,将 /var/log/ 的数据复制进去吧!
      cp -a /var/log/ /srv/myproject
      此时原本的 /srv/myproject 已经被改变了!继续进行备份看看!

    4. 将 /srv/myproject 以 level 1 来进行备份:
      dump -1u -j -f /backups/myproject.dump.1 /srv/myproject
      ls -l /backups

      你应该就会看到两个文件,其中第二个文件 (myproject.dump.1) 会小的多!这样就搞定罗备份数据!

  • 情境模拟三:假设过了一段时间后,你的 /srv/myproject 变的怪怪的,你想要将该 filesystem 以刚刚的备份数据还原, 此时该如何处理呢?你可以这样做的:

    1. 先将 /srv/myproject 卸载,并且将该 partition 重新格式化!
      umount /dev/hdc6
      mkfs -t ext3 /dev/hdc6


    2. 重新挂载原本的 partition ,此时该目录内容应该是空的!
      mount -a
      你可以自行使用 df 以及 ls -l /srv/myproject 查阅一下该目录的内容,是空的啦!

    3. 将完整备份的 level 0 的文件 /backups/myproject.dump 还原回来:
      cd /srv/myproject
      restore -r -f /backups/myproject.dump

      此时该目录的内容为第一次备份的状态!还需要进行后续的处理才行!

    4. 将后续的 level 1 的备份也还原回来:
      cd /srv/myproject
      restore -r -f /backups/myproject.dump.1

      此时才是恢复到最后一次备份的阶段!如果还有 level 2, level 3 时,就得要一个一个的依序还原才行!

大标题的图示参考数据与延伸阅读