linux-basic(9)文件与文件系统的压缩与打包
【9.1】压缩文件的用途与技术
【9.2】linux系统常见的压缩命令
1)压缩文件的扩展名大多是 tar, tar.gz, tgz, gz, Z, bz2 等;如下图所示:

(1)
Linux上常见的压缩命令就是 gzip 与 bzip2 ,至於 compress 已经不再流行了。
【9.2.1】Compress
1)CentOS 默认并没有安装这个软件到系统当中,所以想要了解这个软件的使用时,请先安装 ncompress 这个软件。
【9.2.2】gzip, zcat
1)目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至於 gzip 所创建的压缩档为 *.gz 的档名喔!
【荔枝】 gzip命令

(2)

(3)

(4)

(5)

补充:-9 压缩比最好,但压缩时间最长;
(6)
【9.2.3】bzip2, bzcat
1)介绍:若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至於 bzip2 的用法几乎与 gzip 相同!
【荔枝】bzip2

(7)

(8)

(9)

(10)
【补充】压缩和打包的区别
补充1)压缩:前一小节谈到的命令大多仅能针对单一文件来进行压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是“将目录内的所有文件 "分别" 进行压缩”的动作。即将各个文件压缩后,再打包到一个目录;
补充2)打包:这种将多个文件或目录包成一个大文件的命令功能,我们可以称呼他是一种打包命令;这是将所有数据包成一个文件;
【9.3】打包命令:tar
1)tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩!
【荔枝】tar

(11)
其实最简单的使用 tar 就只要记忆底下的方式即可:
● 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
● 查 询:tar -jtv -f filename.tar.bz2
● 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
【荔枝】使用 tar 加入 -j 或 -z 的参数备份 /etc/ 目录

(12)
补充:优先使用 bzip 即 -j 参数进行压缩;因为压缩效果好;
【荔枝】查阅 tar 文件的数据内容(可察看档名),与备份档名有否根目录的意义

(13)
【注意】上面的每个文件都没跟目录了;
那为什么要拿掉根目录呢?
主要是为了安全!我们使用 tar 备份的数据可能会需要解压缩回来使用, 在 tar 所记录的档名 (就是我们刚刚使用 tar -jtvf 所察看到的档名) 那就是解压缩后的实际档名。 如果拿掉了根目录,假设你将备份数据在 /tmp 解开,那么解压缩的档名就会变成『/tmp/etc/xxx』。 但『如果没有拿掉根目录,解压缩后的档名就会是绝对路径, 亦即解压缩后的数据一定会被放置到 /etc/xxx 去!』如此一来,你的原本的 /etc/ 底下的数据, 就会被备份数据所覆盖过去了!
【荔枝】如果你确定你就是需要备份根目录到 tar 的文件中,那可以使用 -P (大写) 这个选项:

(14)

(15)
【荔枝】将备份的数据解压缩,并考虑特定目录的解压缩动作 (-C 选项的应用)

(16)
【荔枝】仅解开单一文件的方法

(17)
【荔枝】打包某目录,但不含该目录下的某些文件之作法:通过 --exclude 来实现

(18)
【荔枝】仅备份比某个时刻还要新的文件

(19)

(20)
补充:以上操作可以对文件进行差异打包;
【注意】打包和压缩的不同:tarfile, tarball ?
如果仅是打包而已,就是tar -cv -f file.tar 而已,这个文件我们称呼为 tarfile 。
如果还有进行压缩的支持,例如 tar -jcv -f file.tar.bz2 时,我们就称呼为 tarball (tar 球?)!
【荔枝】特殊应用:利用管道命令与数据流
介绍: tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的文件一边打包一边解压缩到目标目录去。

(21)
【9.4】完整备份工具: dump
【9.4.1】dump

(22)
【荔枝】用 dump 备份完整的文件系统

(23)
1)补充:这样很简单的就创建起来 /root/home.dump 文件,该文件将整个 /home/ 文件系统都备份下来了! 并且将备份的时间写入 /etc/dumpdates 文件中,准备让下次备份时可以作为一个参考依据。

(24)
2)检查看看能否真的创建 level 1 的备份呢?

(25)

(26)
差异备份:仅备份更改的文件;
【荔枝】用 dump 备份非文件系统,亦即单一目录的方法
说明) 现在让我们来处理一下 /etc 的 dump 备份吧!因为 /etc 并非单一文件系统,他只是个目录而已。 所以依据限制的说明, -u, level 1~9 都是不适用的。我们只能够使用 level 0 的完整备份将 /etc 给他 dump 下来。

(27)
补充:一般来说 dump 不会使用包含压缩的功能,不过如果你想要将备份的空间降低的话,那个 -j 的选项是可以使用的。 加上 -j 之后你的 dump 成果会使用较少的硬盘容量啦!
【9.4.2】恢复备份文件的命令restore: dump 的复原使用的是 restore 这个命令!

(28)
【荔枝】用 restore 观察 dump 后的备份数据内容

(29)
【荔枝】比较差异并且还原整个文件系统
为什么 dump 可以进行累积备份呢?就是因为他具有可以查询文件系统与备份文件之间的差异, 并且将分析到的差异数据进行备份的缘故。

(30)
【9.5】光盘写入工具
mkisofs:新建镜像文件;
cdrecord 光盘刻录工具;
【9.6】其他常见的压缩与备份工具
【9.6.1】dd:dd 可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!

(31)

(32)

(33)
【总结】tar 可以用来备份关键数据,而 dd 则可以用来备份整颗 partition 或 整颗 disk。
【9.6.2】cpio
1)简介:这个命令挺有趣的,因为 cpio 可以备份任何东西,包括装置设备文件。一般来说, cpio 得要配合类似 find 等可以找到档名的命令来告知 cpio 该被备份的数据在哪里啊!

(34)
【荔枝】cpio + find 备份文件数据

(35)

(36)
【荔枝】其实系统里面已经含有一个使用 cpio 创建的文件喔!那就是 /boot/initrd-xxx 这个文件啦! 现在让我们来将这个文件解压缩看看,看你能不能发现该文件的内容为何?

(37)
【9.7】重点回顾
● 压缩命令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁碟容量。 压缩前与压缩后的文件所占用的磁碟容量比值, 就可以被称为是『压缩比』
● 压缩的好处是可以减少磁碟容量的浪费,在 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 表面数据
【9.2】linux系统常见的压缩命令
1)压缩文件的扩展名大多是 tar, tar.gz, tgz, gz, Z, bz2 等;如下图所示:
(1)
Linux上常见的压缩命令就是 gzip 与 bzip2 ,至於 compress 已经不再流行了。
【9.2.1】Compress
1)CentOS 默认并没有安装这个软件到系统当中,所以想要了解这个软件的使用时,请先安装 ncompress 这个软件。
【9.2.2】gzip, zcat
1)目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至於 gzip 所创建的压缩档为 *.gz 的档名喔!
【荔枝】 gzip命令
(2)
(3)
(4)
(5)
补充:-9 压缩比最好,但压缩时间最长;
(6)
【9.2.3】bzip2, bzcat
1)介绍:若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至於 bzip2 的用法几乎与 gzip 相同!
【荔枝】bzip2
(7)
(8)
(9)
(10)
【补充】压缩和打包的区别
补充1)压缩:前一小节谈到的命令大多仅能针对单一文件来进行压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是“将目录内的所有文件 "分别" 进行压缩”的动作。即将各个文件压缩后,再打包到一个目录;
补充2)打包:这种将多个文件或目录包成一个大文件的命令功能,我们可以称呼他是一种打包命令;这是将所有数据包成一个文件;
【9.3】打包命令:tar
1)tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩!
【荔枝】tar
(11)
其实最简单的使用 tar 就只要记忆底下的方式即可:
● 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
● 查 询:tar -jtv -f filename.tar.bz2
● 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
【荔枝】使用 tar 加入 -j 或 -z 的参数备份 /etc/ 目录
(12)
补充:优先使用 bzip 即 -j 参数进行压缩;因为压缩效果好;
【荔枝】查阅 tar 文件的数据内容(可察看档名),与备份档名有否根目录的意义
(13)
【注意】上面的每个文件都没跟目录了;
那为什么要拿掉根目录呢?
主要是为了安全!我们使用 tar 备份的数据可能会需要解压缩回来使用, 在 tar 所记录的档名 (就是我们刚刚使用 tar -jtvf 所察看到的档名) 那就是解压缩后的实际档名。 如果拿掉了根目录,假设你将备份数据在 /tmp 解开,那么解压缩的档名就会变成『/tmp/etc/xxx』。 但『如果没有拿掉根目录,解压缩后的档名就会是绝对路径, 亦即解压缩后的数据一定会被放置到 /etc/xxx 去!』如此一来,你的原本的 /etc/ 底下的数据, 就会被备份数据所覆盖过去了!
【荔枝】如果你确定你就是需要备份根目录到 tar 的文件中,那可以使用 -P (大写) 这个选项:
(14)
(15)
【荔枝】将备份的数据解压缩,并考虑特定目录的解压缩动作 (-C 选项的应用)
(16)
【荔枝】仅解开单一文件的方法
(17)
【荔枝】打包某目录,但不含该目录下的某些文件之作法:通过 --exclude 来实现
(18)
【荔枝】仅备份比某个时刻还要新的文件
(19)
(20)
补充:以上操作可以对文件进行差异打包;
【注意】打包和压缩的不同:tarfile, tarball ?
如果仅是打包而已,就是tar -cv -f file.tar 而已,这个文件我们称呼为 tarfile 。
如果还有进行压缩的支持,例如 tar -jcv -f file.tar.bz2 时,我们就称呼为 tarball (tar 球?)!
【荔枝】特殊应用:利用管道命令与数据流
介绍: tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的文件一边打包一边解压缩到目标目录去。
(21)
【9.4】完整备份工具: dump
【9.4.1】dump
(22)
【荔枝】用 dump 备份完整的文件系统
(23)
1)补充:这样很简单的就创建起来 /root/home.dump 文件,该文件将整个 /home/ 文件系统都备份下来了! 并且将备份的时间写入 /etc/dumpdates 文件中,准备让下次备份时可以作为一个参考依据。
(24)
2)检查看看能否真的创建 level 1 的备份呢?
(25)
(26)
差异备份:仅备份更改的文件;
【荔枝】用 dump 备份非文件系统,亦即单一目录的方法
说明) 现在让我们来处理一下 /etc 的 dump 备份吧!因为 /etc 并非单一文件系统,他只是个目录而已。 所以依据限制的说明, -u, level 1~9 都是不适用的。我们只能够使用 level 0 的完整备份将 /etc 给他 dump 下来。
(27)
补充:一般来说 dump 不会使用包含压缩的功能,不过如果你想要将备份的空间降低的话,那个 -j 的选项是可以使用的。 加上 -j 之后你的 dump 成果会使用较少的硬盘容量啦!
【9.4.2】恢复备份文件的命令restore: dump 的复原使用的是 restore 这个命令!
(28)
【荔枝】用 restore 观察 dump 后的备份数据内容
(29)
【荔枝】比较差异并且还原整个文件系统
为什么 dump 可以进行累积备份呢?就是因为他具有可以查询文件系统与备份文件之间的差异, 并且将分析到的差异数据进行备份的缘故。
(30)
【9.5】光盘写入工具
mkisofs:新建镜像文件;
cdrecord 光盘刻录工具;
【9.6】其他常见的压缩与备份工具
【9.6.1】dd:dd 可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!
(31)
(32)
(33)
【总结】tar 可以用来备份关键数据,而 dd 则可以用来备份整颗 partition 或 整颗 disk。
【9.6.2】cpio
1)简介:这个命令挺有趣的,因为 cpio 可以备份任何东西,包括装置设备文件。一般来说, cpio 得要配合类似 find 等可以找到档名的命令来告知 cpio 该被备份的数据在哪里啊!
(34)
【荔枝】cpio + find 备份文件数据
(35)
(36)
【荔枝】其实系统里面已经含有一个使用 cpio 创建的文件喔!那就是 /boot/initrd-xxx 这个文件啦! 现在让我们来将这个文件解压缩看看,看你能不能发现该文件的内容为何?
(37)
【9.7】重点回顾
● 压缩命令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁碟容量。 压缩前与压缩后的文件所占用的磁碟容量比值, 就可以被称为是『压缩比』
● 压缩的好处是可以减少磁碟容量的浪费,在 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 命令来读入欲备份的档名数据,方可进行备份动作。