【鸟哥的linux私房菜-学习笔记】档案与文件系统的压缩与打包

时间:2022-07-07 05:13:47

压缩文件的用途与技术

什么是压缩:比如你的数据为『111….』共有100个1时, 那么压缩技术会记录为『100个1』。
(这只是一个简单的例子,事实上压缩比这个复杂)

我们知道,计算机中存储的都是1,0的数据,假如一个byte存了7个0和1个1,那么空间占用会比较大,通过压缩可以节省空间。压缩过的文件,想让系统所使用,一般需要进行“还原”,即解压缩。

Linux 系统常见的压缩命令

常见的压缩文件扩展名:

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

**注意,压缩命令通常仅能针对一个文件来压缩与解压缩,故常常需要进行打包(tar)

compress:比较老旧,几近被淘汰了。

gzip: 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 gzip 所创建的压缩档为 *.gz。使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 *.gz,原始文件就不再存在了。

zcat: 可以读取纯文字档被压缩后的压缩档,还可以读取 compress 与 gzip 的压缩档。

bzip2: 压缩比比gzip更高,用法几乎与gzip相同。压缩后可用bzcat读取数据而不需要解开。

打包命令: tar

虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是『将目录内的所有文件 “分别” 进行压缩』的动作! 而不像在 Windows 的系统,可以使用类似 WinRAR 这一类的压缩软件来将好多数据『包成一个文件』的样式。

最简单的 tar 使用:

压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -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 打包!

解开单一文件:tar -jxv -f 打包档.tar.bz2 待解开档名

tar -cvf - /etc | tar -xvf -:类似于 cp -r /etc /tmp

备份工具:dump

dump 命令可备份文件系统或单一目录
dump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level 0 为完整备份

还原工具:restore

可还原被 dump 建置的备份档

光盘写入工具

刻录的通常作法:

先将所需要备份的数据建置成为一个映像档(iso),利用 mkisofs 命令来处理;
将该映像档烧录至光盘或 DVD 当中,利用 cdrecord 命令来处理。
即:
mkisofs:创建映像档
cdrecord:光盘烧录工具

其他常见的压缩与备份工具

dd:可以用来备份整颗 partition 或 整颗 disk

cpio:可以备份任何东西,包括装置设备文件

必须要搭配类似 find 命令来读入欲备份的档名数据,方可进行备份动作