linux档案与文件的的压缩与打包

本文涉及的命令:gzip、zcat、bzip2、bzcat、tar、dump、restore、mkiosfs、cdrecord、dd、cpio。

概念:

  1. 几种基础压缩的概念:
    1. 计算机最小单位是字节,但数据存储过程中有些字节中有些位数据没有使用,但计算机会填0,有的压缩技术就是利用复杂的算法将本应该是空的位【丢】出来。
    2. 另一种压缩就是将重复出现的内容进行解释。从而降低文件容量。
  2. 几种常见的压缩扩展名
    1. *.Z    compress 程序压缩的档案;(过时,不用了)
    2. *.gz    gzip 程序压缩的档案;
    3. *.bz2    bzip2 程序压缩的档案;
    4. *.tar    tar 程序打包的数据,并没有压缩过;
    5. *.tar.gz   tar 程序打包的档案,其中并且经过 gzip 的压缩
    6. *.tar.bz2   tar 程序打包的档案,其中并且经过 bzip2 的压缩
  3. dump备份工具
    1. 分等级备份,完整备份、差异备份
    2. 当待备份的文件为单一文件系统时可使用完整的dump功能。
    3. 当备份的资料为目录,并非单一文件系统,则备份资料必须在同一目录下,且只能使用完整备份,不支持 -u 选顷,即无法建立 /etc/dumpdates 这个各别 level 备份的时间记录文件;(详细请见后面命令解释)
  4. dd备份工具
    1. 可备份分区或磁盘,可实现磁盘对拷,无需格式化。

命令:

  1. gzip [-cdtv#] 档名   【可接重定向符,保留原档】
    • -c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
    • -d :解压缩的参数;
    • -t :可以用来检验一个压缩文件的一致性~看看档案有无错误;
    • -v :可以显示出原档案/压缩文件案的压缩比等信息;
    • -# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是-6
    • 查看:zcat 档名.gz
  2. bzip2 [-cdkzv#] 档名
    • -c :将压缩的过程产生的数据输出到屏幕上!
    • -d :解压缩的参数
    • -k :保留源文件,而不会删除原始的档案喔!
    • -z :压缩的参数
    • -v :可以显示出原档案/压缩文件案的压缩比等信息;
    • -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
    • 查看:bzcat 档名.bz2
  3. tar---------文件的打包
    1. tar [-j|-z] [cv] [-f 建立的档名] filename... <==打包与压缩
    2. tar [-j|-z] [tv] [-f 建立的档名] <==察看档名
    3. tar [-j|-z] [xv] [-f 建立的档名] (可接打包档案中的某个档案名)[-C 目录] <==解压缩
      • -c :建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename)
      • -t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了;-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开,-c, -t, -x 不可同时使用
      • -j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
      • -z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
      • -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
      • -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选顷!
      • -C 目录 :这个选顷用在解压缩,若要在特定目录解压缩,可以使用这个选顷。
      • -p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
      • -P :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
      • --exclude=FILE:在压缩的过程中,不要将 FILE 打包!
    4. 例:
      1. 先由 find 找出比 /etc/passwd 还要新的档案
        1. find /etc -newer /etc/passwd
      2. 使用 tar 来进行打包吧!日期为 2008/09/29
        1. tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2008/09/29" /etc/*(此处有点问题)
  4. dump [-Suvj] [-level] [-f 备份档] 待备份资料 -----------备份
    • -S :仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;
    • -u :将这次 dump 的时间记录到 /etc/dumpdates 档案中;
    • -v :将 dump 的档案过程显示出来;
    • -j :加入 bzip2 的支持!将数据进行压缩,默认 bzip2 压缩等级为 2
    • -level:就是我们谈到的等级,从 -0 ~ -9 共十个等级;
    • -f :类似 tar ,后面接产生的档案,亦可接例如 /dev/st0 装置文件名等
    • -W :列出在 /etc/fstab 里面的具有 dump 设定的 partition 是否有备份过?
  5. restore----------dump的还原      还原时需要进入档需要还原的目录下!
    1. restore -t [-f dumpfile] [-h] <==用来察看 dump 档
    2. restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际档案
    3. restore -i [-f dumpfile] <==进入互动模式
    4. restore -r [-f dumpfile] <==还原整个文件系统
      • -t :此模式用在察看 dump 起来的备份文件中都有什么重要数据!类似 tar -t功能
      • -C :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较,最终会列出『在 dump 档案内有记录的,且目前文件系统不一样』的档案;
      • -i :进入互动模式,可以仅还原部分档案,用在 dump 目录时的还原!
      • -r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份
      • -h :察看完整备份数据中的 inode 与文件系统 label 等信息。
      • -f :后面就接你要处理的那个 dump 档案。
      • -D :与 -C 进行搭配,可以查出后面接的挂载点与 dump 内有不同的档案!
  6. mkiosfs---------建立映像档
    1. mkisofs [-o 映像档] [-rv] [-m file] 待备份文件.. [-V vol] -graft-point isodir=systemdir ...
      • -o :后面接你想要产生的那个映像档档名。
      • -r :透过 Rock Ridge 产生支持 Unix/Linux 的档案数据,可记录较多的信息;
      • -v :显示建置 ISO 档案的过程
      • -m file :-m 为排除档案 (exclude) 的意思,后面的档案不备份到映像档中
      • -V vol :建立 Volume,有点像 Windows 在档案总管内看到的 CD title 的东西
      • -graft-point:graft有转嫁或移植的意思,
  7. cdrecord---------光盘刻录工具
    1. cdrecord -scanbus dev=ATA <==查询刻录机位置
    2. cdrecord -v dev=ATA:x,y,z blank=[fast|all] <==抹除重复读写片
    3. cdrecord -v dev=ATA:x,y,z -format <==格式化DVD+RW
    4. cdrecord -v dev=ATA:x,y,z [可用选顷功能] file.iso
      • [可用选顷功能] 主要是写入 CD/DVD 时可使用的选顷,常见的选顷包括有:
      • -data :指定后面的档案以数据格式写入,不是以 CD 音轨(-audio)方式写入!
      • speed=X :指定刻录速度,例如CD可用 speed=40 为40倍数,DVD则可用 speed=4 之类
      • -eject :指定刻录完毕后自动退出光盘
      • fs=Ym :指定多少缓冲存储器,可用在将映像档先暂存至缓冲存储器。预设为 4m,一般建议可增加到 8m ,不过,还是得规你的刻录机而定。
        • 针对 DVD 的选顷功能:
          • driveropts=burnfree :打开 Buffer Underrun Free 模式的写入功能
          • -sao :支持 DVD-RW 的格式
  8. dd if="input_file" of="output_file" bs="block_size"  count="number"------建立文档、备份 (可实现磁盘对拷,无需格式化)
    • if :就是 input file,也可以是装置
    • of :就是 output file,也可以是装置
    • bs :规划的一个 block 的大小,若未指定则预设是 512 bytes(一个 sector 的大小)
    • count:多少个 bs 的意思。
  9. cpio---------备份
    1. cpio -ovcB > [file|device] <==备份
    2. cpio -ivcdu < [file|device] <==还原
    3. cpio -ivct < [file|device] <==察看
      1. 备份会使用到的选顷与参数:
        • -o :将数据 copy 输出到档案或装置上
        • -B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes ! 这样的好处是可以让大档案的储存速度加快。
      2. 还原会使用到的选顷与参数:
        • -i :将数据自档案或装置 copy 出来系统当中
        • -d :自动建立目录!使用 cpio 所备份的数据内容不见得会在同一层目录中,因此我们必项要让cpio 在还原时可以建立新目录。
        • -u :自动的将较新的档案覆盖较旧的档案!
        • -t :需配合 -i 选顷,可用在"察看"以 cpio 建立的档案或装置的内容
      3. 一些可共享的选顷与参数:
        • -v :让储存的过程中文件名可以在屏幕上显示
        • -c :一种较新的 portable format 方式储存

提示:本文为《鸟哥linux私房菜基础篇》阅读笔记,不详细的地方请自行阅读该书。

上一篇:鸟哥的linux私房菜 - 第5/6/7/9章(在线求助 man page、Linux档案权限与目录配置、Linux档案与目录管理、压缩与打包)


下一篇:linux备忘录-档案与文件系统的压缩与打包