5,linux入门到上手-文件与文件系统的压缩,打包与备份

时间:2019-10-25
本文章向大家介绍5,linux入门到上手-文件与文件系统的压缩,打包与备份,主要包括5,linux入门到上手-文件与文件系统的压缩,打包与备份使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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可以将原本要转成压缩文件的数据内容,将它变成文字类型从屏幕输出,然 后我们可以通过大于(>)这个符号,将原本应该由屏幕输出的数据,转成输出到文件而不 是屏幕,所以就能够创建出压缩挡了。

cat/more/less可以使用不同的方式来读取纯文本文件,那个zcat/zmore/zless则可以对应于 cat/more/less的方式来读取纯文本文件被压缩后的压缩文件!由于gzip这个压缩指令主要想 要用来取代compress的,所以不但compress的压缩文件可以使用gzip来解开,同时zcat 这个指令可以同时读取compress与gzip的压缩文件呦!

另外,如果你还想要从文字压缩文件当中找数据的话,可以通过zgrep来搜寻关键字喔!而不需要将压缩文件解开才以grep进行!这对查询备份中的文本文件数据相当有用!

时至今日,应该也没有人爱用compress这个老老的指令了!~而如果你还有备份数据使用的是compress创建出来的.Z文件,那也无须担心,使用znew可以将该文件转成gzip的格示喔!

2、bzip2,bzcat/bzmore/bzless/bzgrep

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

看上面的范例,你会发现到bzip2连选项与参数都跟gzip一模一样!只是扩展名由.gz变成 .bz2而已!其他的用法都大同小异!你也可以发现到bzip2的压 缩率确实比gzip要好些!不过,对于大容量文件来说,bzip2压缩时间会花比较久喔!至少比gzip要久的多!这没办法~要有更多可用容量,就得要花费相对应的时间!

3、xz,xzcat/xzmore/xzless/xzgrep

虽然bzip2已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了xz这个压缩比更高的软件!这个软件的用法也跟gzip/bzip2几乎一模一样!那我们就来瞧一瞧

虽然xz这个压缩比真的好太多太多了!以这个services文件为范例,他可以将 gzip压缩比(压缩后/压缩前)的21%更进一步优化到15%耶!差非常非常多!不过,xz 最大的问题是...时间花太久了!如果你曾经使用过xz的话,应该会有发现,他的运算时间真的比gzip久很多喔!

通过“time [gzip|bzip2|xz] -c services > services.[gz|bz2|xz]”去执行运算 结果,结果发现这三个指令的执行时间依序是:0.019s, 0.042s, 0.261s,看最后一个数字! 差了10倍的时间耶!所以,如果你并不觉得时间是你的成本考虑,那么使用xz会比较好! 如果时间是你的重要成本,那么gzip恐怕是比较适合的压缩软件喔!

0x03 打包指令: tar

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

这种将多个文件或目录包成一个大文件的指令功能,我们可以称呼他是一种“打包指令”啦! 那Linux有没有这种打包指令呢?是有的!那就是鼎鼎大名的tar这个玩意儿了!tar可以将 多个目录或文件打包成一个大文件,同时还可以通过gzip/bzip2/xz的支持,将该文件同时进 行压缩!更有趣的是,由于tar的使用太广泛了,目前Windows的WinRAR也支持.tar.gz 文件名的解压缩呢!很不错吧!所以下面我们就来玩一玩这个咚咚!

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: Removing leading /' from member names(移除了文件名开头的/')”所告知的情况!
那为什么要拿掉根目录呢?主要是为了安全!我们使用 tar 备份的数据可能会需要解压缩回来使用,在tar所记录的文件名(就是我们刚刚使用tar -jtvf所察看到的文件名)那就是解压 缩后的实际文件名。如果拿掉了根目录,假设你将备份数据在/tmp解开,那么解压缩的文件 名就会变成“/tmp/<u>etc/xxx</u>”。但“如果没有拿掉根目录,解压缩后的文件名就会是绝对 路径,亦即解压缩后的数据一定会被放置到<u>/etc/xxx</u>去!”如此一来,你的原本的 /etc/下面的数据,就会被备份数据所覆盖过去了!

如果你确定你就是需要备份根目录到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找到你要的 文件名,然后将该文件名解开即可。我们用下面的例子来说明一下:

  • 实例五:打包某目录,但不含该目录下的某些文件之作法
  • 实例六:仅备份比某个时刻还要新的文件

原文地址:https://www.cnblogs.com/v01cano/p/11738806.html