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

0x01、常见的压缩文件扩展名

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

ox02、Linux系统常见的压缩指令

1、gzip,zcat/zmore/zless/zgrep

gzip可以说是应用度最广的压缩指令了!目前gzip可以解开compress,zip与gzip等软件所 压缩的文件。至于 gzip所创建的压缩文件为*.gz的文件名喔!让我们来看看这个指令的语 法吧:

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

范例四的重点在那个-c与 >的使用啰!-c可以将原本要转成压缩文件的数据内容,将它变成文字类型从屏幕输出,然 后我们可以通过大于(>)这个符号,将原本应该由屏幕输出的数据,转成输出到文件而不 是屏幕,所以就能够创建出压缩挡了。

2、bzip2,bzcat/bzmore/bzless/bzgrep

若说gzip是为了取代compress并提供更好的压缩比而成立的,那么bzip2则是为了取代 gzip并提供更佳的压缩比而来的。bzip2真是很不错用的东西~这玩意的压缩比竟然比gzip 还要好~至于bzip2的用法几乎与gzip相同!看看下面的用法吧:

3、xz,xzcat/xzmore/xzless/xzgrep

0x03 打包指令: tar

1、tar

其实最简单的使用tar就只要记忆下面的方式即可:

  • 压 缩:tar -j <u> c </u> v -f filename.tar.bz2要被压缩的文件或目录名称
  • 查 询:tar -j <u> t </u> v -f filename.tar.bz2
  • 解压缩:tar -j <u> x </u> v -f filename.tar.bz2 -C欲解压缩的目录

[注意]:

另外,由于“-f filename”是紧接在一起的,过去很多文章常会写成“-jcvf filename”,这样是对 的,但由于选项的顺序理论上是可以变换的,所以很多读者会误认为“-jvfc filename”也可以~ 事实上这样会导致产生的文件名变成c!因为-fc嘛!所以啰,建议您在学习tar时,将“-f filename”与其他选项独立出来,会比较不容易发生问题。

实例1:使用tar加入-z,-j或-J的参数备份/etc/目录

实例2:查阅tar文件的数据内容(可察看文件名),与备份文件名有否根目录的意义

要察看由tar所创建的打包文件内部的文件名非常的简单!可以这样做:

如果加上-v这个选项时,详细的文件权限/属性都会被列出来!如果只是想要知道文件名而 已,那么就将-v拿掉即可。

如果你确定你就是需要备份根目录到tar的文件中,那可以使用-P(大写)这个选项,请看 下面的例子分析:

范例:将文件名中的(根)目录也备份下来,并察看一下备份文件的内容文件名
[root@study ~]# tar -jpPcv -f etc.and.root.tar.bz2 /etc
[root@study ~]# tar -jtf etc.and.root.tar.bz2
/etc/locale.conf
/etc/hostname
/etc/aliases.db
#这次查阅文件名不含-v选项,所以仅有文件名而已!没有详细属性/权限等参数。

有发现不同点了吧?如果加上-P选项,那么文件名内的根目录就会存在喔!不过,个人 建议,还是不要加上-P这个选项来备份!毕竟很多时候,我们备份是为了要未来追踪问题用 的,倒不一定需要还原回原本的系统中!所以拿掉根目录后,备份数据的应用会比较有弹性!也比较安全呢!

  • 实例三:将备份的数据解压缩,并考虑特定目录的解压缩动作(-C选项的应用)

可以使用-C选项解压到指定目录:

  • 实例四:仅解开单一文件的方法

刚刚上头我们解压缩都是将整个打包文件的内容全部解开!想像一个情况,如果我只想要解 开打包文件内的其中一个文件而已,那该如何做呢?很简单的,你只要使用-jtv找到你要的 文件名,然后将该文件名解开即可。我们用下面的例子来说明一下:

  • 实例五:打包某目录,但不含该目录下的某些文件之作法
  • 实例六:仅备份比某个时刻还要新的文件
12-30 06:59
查看更多