鸟哥linux文件系统的压缩,打包与备份

压缩文件的用途与技术

使得单个文件的单个磁盘使用率降低,这里先谈一谈他的原理。

如果今天我们只是记忆一个数字, 1 会在最右边占据1 个bit ,而其他的7 个bits 将会自动的被填上0,其实在这样的例子中,那7 个bits 应该是『空的』,而一些聪明的计算机工程师就利用一些复杂的计算方式, 将这些没有使用到的空间『丢』出来,以让文件占用的空间变小

另外一种压缩技术也很有趣,他是将重复的数据进行统计记录的。举例来说,如果你的数据为『111….』共有100 个1 时, 那么压缩技术会记录为『100 个1』而不是真的有100 个1 的位存在

Linux系统常见的压缩指令

在 Linux 的环境中,压缩文件案的扩展名大多是:『.tar, .tar.gz, .tgz, .gz, .Z, .bz2, *.xz』,为什么会有这样的扩展名呢?不是说Linux 的扩展名没有什么作用吗?

这是因为 Linux 支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件。

gzip, zcat/zmore/zless/zgrep

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[dmtsai@study ~]$ gzip [-cdtv#] 檔名
[dmtsai@study ~]$ zcat 檔名.gz
选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件案的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6]

# 如果原本文件是文本文件,那么可以使用zcat去读取
[dmtsai@study tmp]$ zcat services.gz

#解压缩
[dmtsai@study tmp]$ gzip -d services.gz

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

bzip2, bzcat/bzmore/bzless/bzgrep

用法和gzip类似,效果更好,但是压缩时间更久

另外还有xz,效果更好,时间更久

打包指令 tar

将多个文件或目录包成一个大文件的指令功能,我们可以称呼他是一种『打包指令』,tar 可以将多个目录或文
件打包成一个大文件,同时还可以透过gzip/bzip2/xz 的支持,将该文件同时进行压缩

tar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[dmtsai@study ~]$ tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... <==打包与压缩
[dmtsai@study ~]$ tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] <==察看檔名
[dmtsai@study ~]$ tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目录] <==解压缩
选项与参数:
-c :建立打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
-z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-J :透过 xz 的支持进行压缩/解压缩:此时档名最好为 *.tar.xz
特别留意, -z, -j, -J 不可以同时出现在一串指令列中
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
其他后续练习会使用到的选项介绍:
-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!

最简单的使用方法如下:

  • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查 询:tar -jtv -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录