RHCSA&RHCE(RHCE7)学习知识点-- Linux文件的压缩,打包与备份

 

压缩文件的用途与技术

如果我们记录数字1,计算机使用二进制,1会在最右边占据1个 bit,而其他的7个 bits 将会自动的被填上0,那7个bits应该是『空的』才对,为了要满足目前我们的操作系统数据的存取,所以就会将该数据转为 byte 的型态来记录,将这些没有使用到的空间『丢』出来,以让文件占用的空间变小,这就是压缩的技术

『压缩过的文件』无法直接被使用,必须将他『还原』回来未压缩前的模样才能使用,这就是『解压缩』,而压缩后与压缩的文件所占用的磁盘空间大小,被称为是『压缩比』

Linux 系统常见的压缩指令

几个常见的压缩文件案扩展名:

*.Z         compress 程序压缩的文件;

*.zip       zip 程序压缩的文件;

*.gz        gzip 程序压缩的文件;

*.bz2       bzip2 程序压缩的文件;

*.xz        xz 程序压缩的文件;

*.tar       tar 程序打包的数据,并没有压缩过;

*.tar.gz    tar 程序打包的文件,其中并且经过 gzip 的压缩

*.tar.bz2   tar 程序打包的文件,其中并且经过 bzip2 的压缩

*.tar.xz    tar 程序打包的文件,其中并且经过 xz 的压缩

Linux上常见的压缩指令就是 gzip, bzip2以及最新的xz。gzip是由GNU计划所开发出来的压缩指令,该指令已经取代了compress。后来GNU又开发出 bzip2 及 xz 这几个压缩比更好的压缩指令。压缩指令通常仅能针对一个文件来压缩与解压缩,而tar可以将很多文件『打包』成为一个文件,也可以打包目录。后来,GNU计划中,将整个tar与压缩的功能结合在一起。

gzip, zcat/zmore/zless/zgrep

gzip可以解开compress, zip与gzip等软件所压缩的文件

$ gzip [-cdtv#] 文件名

$ zcat 文件名.gz

选项与参数:

-c  :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;

-d  :解压缩的参数;

-t  :可以用来检验一个压缩文件的一致性~看看文件有无错误;

-v  :可以显示出原文件/压缩文件的压缩比等信息;

-#  :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6

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

cat/more/less 可以使用不同的方式来读取纯文本档,那个 zcat/zmore/zless 则可以对应于 cat/more/less 的方式来读取纯文本档被压缩后的压缩文件,可以通过 zgrep 来搜寻关键词

bzip2, bzcat/bzmore/bzless/bzgrep

bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的

$ bzip2 [-cdkzv#] 文件名

$ bzcat 文件名.bz2

选项与参数:

-c  :将压缩的过程产生的数据输出到屏幕上!

-d  :解压缩的参数

-k  :保留源文件,而不会删除原始的文件喔!

-z  :压缩的参数 (默认值,可以不加)

-v  :可以显示出原文件/压缩文件案的压缩比等信息;

-#  :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快

xz, xzcat/xzmore/xzless/xzgrep

后来还推出了 xz 这个压缩比更高的软件

$ xz [-dtlkc#] 文件名

$ xcat 文件名.xz

选项与参数:

-d  :就是解压缩啊!

-t  :测试压缩文件的完整性,看有没有错误

-l  :列出压缩文件的相关信息

-k  :保留原本的文件不删除

-c  :同样的,就是将数据由屏幕上输出的意思

-#  :同样的,也有较佳的压缩比的意思

xz 最大的问题是时间太长,使用xz 的运算时间比 gzip长很多

打包指令: tar

tar 可以将多个目录或文件打包成一个大文件,同时还可以通过 gzip/bzip2/xz 的支持,将该文件同时进行压缩

$ tar [-z|-j|-J] [cv] [-f 待建立的新文件名] filename... <==打包与压缩

$ tar [-z|-j|-J] [tv] [-f 既有的 tar文件名]             <==查看文件名

$ 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 的方式:

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

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

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

cpio

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 方式储存

 

参考文档:

《鸟哥的Linux私房菜基础篇第三版》

 

你可能感兴趣的:(RHCE,Linux,压缩,打包)