Linux文件与文件系统的压缩与打包(2)

虽然gzip与bzip2也能针对目录来进行压缩,不过这两个目录的压缩指的是将目录内的所有文件“分别”进行压缩的操作。
这种将多个文件或目录包成一个大文件的命令功能,我们可以称呼它是一种“打包命令”。Linux下面就是鼎鼎大名的tar。tar可以将多个目录或文件打包成一个大文件,同时还可以通过gzip/bzip2的支持,将该文件同时进行压缩。
tar的参数非常多,我们只讲几个常用的参数,更多参数可以自行man tar查询。

[root@www ~]#tar [-j|-z] [cv] [-f 新建的文件名] filename... <==打包与压缩 [root@www ~]#tar [-j|-z][tv] [-f 新建的文件名] <==查看文件名 [root@www ~]#tar [-j|-z] [xv] [-f 新建的文件名] [-C 目录] <==解压缩 参数: -c : 新建打包文件,可搭配-v来查看过程中被打包的文件名(filename). -t : 查看打包文件的内容含有哪些文件名,重点在查看文件名. -x : 解打包或解压缩的功能,可以搭配-C(大写)在特别目录中解开.特别留意的是,-c,-t,-x不可同时出现在一串命令行中. -j : 通过bzip2的支持进行压缩/解压缩,此时文件名最好是*.tar.bz2. -z : 通过gzip的支持进行压缩/解压缩,此时文件名最好是*.tar.gz. -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 欲解压的目录

那么filename.tar.bz2是我们自定义的文件名,tar并不会主动产生创建的文件名。我们要自定义。所以扩展名就很重要了。如果不加[-j|-z]的话,文件名最好取为.tar即可。如果是-j参数,代表有bzip2的支持,因此文件名最好就取为.tar.bz2,因为bzip2会产生.bz2的扩展名。至于如果是-z参数,代表了gzip的支持,因此文件名最好就取为*.tar.gz。

使用tar加入-j或-z的参数备份/etc/目录

使用tar加入-j或-z的参数备份/etc/目录

这里写图片描述

两种压缩方式的比较

看到两种压缩的方式了吗,bzip2压缩确实比gzip压缩率高,所以推荐用bzip2来进行备份。

查询tar文件的数据内容(可查看文件名),与备份文件名是否有根目录的意义

要查看文件名非常简单,可以这样做:

查询tar文件的数据内容

将解压缩的文件解压到指定位置(-C参数的应用)

将解压缩的文件解压到指定位置

仅解开单个文件的方法
首先我们需要使用-jtv找到你要的文件名,然后将该文件名解开即可。
1.先找到我们要的文件名,假设解开shadow文件。

仅解开单个文件的方法

2.将该文件解开。语法和实际如下:

解压指定的文件操作

 

打包某目录,但不包含该目录下的某些文件的做法(–exclude=FILE)
假设我们想要打包/etc /root 这几个重要的目录,但却不想要打包/root/etc*开头的文件,因为该文件我们都是刚才已经创建的备份文件。而且假设这个新的打包文件要放置称为/root/system.tar.bz2,当然这个文件不要自己打包自己(因为这个文件放置在/root下面),此时我们可以通过–exclude的帮忙。so you can do that:

[root@www ~]#tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* \ >--exclude=/root/system.tar.bz2 /etc /root

详情可参见<鸟哥的Linux私房菜>第九章 ->Linux文件与文件系统的压缩与打包

鸟哥的Linux私房菜-基础学习篇(第四版)高清完整书签PDF版  下载见 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15111.html