压缩与打包--鸟哥私房菜读书笔记

本文详细介绍了Linux系统中常用的压缩及备份工具,包括gzip、bzip2、tar、dump、restore等命令的使用方法及其参数说明。同时介绍了如何利用这些工具进行文件的压缩、打包、解压、备份和恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 压缩

Linux上常见的压缩指令就是 gzip 与 bzip2 ,至于 compress 已经退流行了。

*.Z compress 程序压缩的档案;
*.gz gzip 程序压缩的档案;
*.bz2 bzip2 程序压缩的档案;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的档案,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的档案,其中并且经过 bzip2 的压缩

a. gzip, zcat

gzip [-cdtv#] 檔名
zcat 檔名.gz

-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看档案有无错误;
-v :可以显示出原档案/压缩文件案的压缩比等信息;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

当你使用 gzip 进行压缩时,在预设的状态下原本的档案会被压缩成为 .gz 的挡名, 源文件就不再存在了

b. bzip2, bzcat

bzip2 [-cdkzv#] 檔名
bzcat 檔名.bz2

-c :将压缩的过程产生的数据输出到屏幕上!
-d :解压缩的参数
-k :保留源文件,而不会删除原始的档案喔!
-z :压缩的参数
-v :可以显示出原档案/压缩文件案的压缩比等信息;
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

2. 打包

虽然 gzip 与 bzip2 也能够针对目录来进行压缩,不过,这两个指令对目录的压缩指的是『将目录内的所有档案 "分别" 进行压缩』的动作。tar将多个档案或目录包成一个大档案的指令功能,我们可以称呼他是一种『打包指令』

tar [-j|-z] [cv] [-f 建立的檔名] filename... <==打包与压缩
tar [-j|-z] [tv] [-f 建立的檔名] <==察看檔名
tar [-j|-z] [xv] [-f 建立的檔名] [-C 目录] <==解压缩

-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 
-z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz 

-c :建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename)
-t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
  
-f filename:-f 必须马上接被处理的档名!建议 -f 单独写一个选项!
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

a. 仅解开单一档案的方法

你只要使用 -jtv 找到你要的档名,然后将该档名解开即可
tar -jxv -f 打包檔.tar.bz2 待解开档名

b. 打包某目录,但不含该目录下的某些档案之作法

tar -jcv -f 打包档.tar.bz2 --exclude=不包含的目录或文件 被打包的文档或目录

c. 仅备份比某个时刻还要新的档案

tar -jcv -f 打包档.tar.bz2 --newer[-mtime]="日期" 被打包的文档或目录
使用 --newer 时,表示后续的日期包含『 mtime 与 ctime 』,而 --newer-mtime 则仅是 mtime 而已

3. 备份

a. 完整备份工具:dump

这个指令除了能够针对整个 filesystem 备份之外,也能够仅针对目录来备份。

dump [-Suvj] [-level] [-f 备份档] 待备份资料
dump -W

-S :仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;
-u :将这次 dump 的时间记录到 /etc/dumpdates 档案中;
-v :将 dump 的档案过程显示出来;
-j :加入 bzip2 的支持!将数据进行压缩,默认 bzip2 压缩等级为 2
-level:就是我们谈到的等级,从 -0 ~ -9 共十个等级;
-f :有点类似 tar 啦!后面接产生的档案,也可接例如 /dev/st0 装置文件名等
-W :列出在 /etc/fstab 里面的具有 dump 设定的 partition 是否有备份过

b. 复原备份restore

restore -t [-f dumpfile] [-h] <==用来察看 dump 档
restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际档案
restore -i [-f dumpfile] <==进入互动模式
restore -r [-f dumpfile] <==还原整个文件系统

相关的各种模式,各种模式无法混用喔!例如不可以写 -tC 啦!
-t :此模式用在察看 dump 起来的备份文件中含有什么重要数据!类似 tar -t 功能;
-C :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较, 最终会列出『在 dump 档案内有记录的,且目前文件系统不一样』癿档案;
-i :进入互动模式,可以仅还原部分档案,用在 dump 目录时的还原!
-r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份;

其他较常用到的选顷功能:
-h :察看完整备份数据中的 inode 与文件系统 label 等信息
-f :后面就接你要处理的那个 dump 档案啰!
-D :与-C 进行搭配,可以查出后面接的挂载点与 dump 内有不同的档案!

4. 其他压缩备份工具

a. dd

dd 可以读取磁盘装置的内容(几乎是直接读取扇区"sector"),然后将整个装置备份成一个档案

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 的意思。

b. cpio

cpio 可以备份任何东西,包括装置设备档案。不过 cpio 有个大问题, 那就是 cpio 不会主动的去找档案来备份,cpio 得要配合类似 find 等可以找到文件名的指令来告知 cpio 该被备份的数据在哪里。

cpio -ovcB > [file|device] <==备份
cpio -ivcdu < [file|device] <==还原
cpio -ivct < [file|device] <==察看

备份会使用到的选项与参数:
-o :将数据 copy 输出到档案或装置上
-B :让预设的 Blocks 可以增加至 5120 bytes ,预是是 512 bytes ! 这样的好处是可以让大档案的储存速度加快
还原会使用到的选项与参数:
-i :将数据自档案或装置 copy 出来系统当中
-d :自动建立目录!使用 cpio 所备份的数据内容不见得会在同一层目录中,因此我们 必项要让 cpio 在还原时可以建立新目录,此时就得要 -d 选项的帮助!
-u :自动的将较新的档案覆盖较旧的档案!
-t :需配合 -i 选项,可用在"察看"以 cpio 建立的档案或装置的内容
一些可共享的选项与参数:
 -v :让储存的过程中文件名可以在屏幕上显示
-c :一种较新的 portable format 方式储存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值