Linux文件压缩

(整理自《鸟哥的LInux私房菜》基础篇)

1.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 ,至于 compress 已经不流行了。不过,这些指令通常仅能针对一个文件来压缩与解压缩,这个 tar 可以将很多文件打包成为一个文件,甚至是目录也可以这么玩。不过,单纯的 tar 功能仅是打包而已,亦即是将很多文件集结成为一个文件, 将整个 tar 与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能。

2.Linux系统的常见压缩命令

2.1 gzip命令

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

 Linux文件压缩

2.2 bzip2命令

 Linux文件压缩

 2.3 xz命令

 Linux文件压缩

 xz又进一步提高了压缩比,不过, xz 最大的问题就是时间花太久了,如果你曾经使用过 xz 的话,应该会有发现,他的运算时间真的比 gzip久很多。

3.打包命令:tar

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

tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询。

Linux文件压缩

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

•        压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称

•        查 询:tar -jtv -f filename.tar.bz2

•        解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

那个 filename.tar.bz2 是我们自己取的文件名,tar 并不会主动的产生建立的文件名,需要我们自定义。所以扩展名就显的很重要了!如果不加 [-z|-j|-J] 的话,文件名最好取为 *.tar 即可。如果是 -j 选项,代表有 bzip2 的支持,因此文件名最好就取为 *.tar.bz2 ,如果是加上了 -z 的 gzip 的支持,那问及那名最好取为 *.tar.gz 。

另外,由于『 -f filename 』是紧接在一起的,过去很多文章常会写成『-jcvf filename』,这样是对的,但由于选项的顺序理论上是可以变换的,所以很多人会误认为『-jvfc filename』也可以,事实上这样会导致产生的文件名变成 c ,因为 -fc的顺序问题!

4. 解压缩后的 SELinux 问题

SELinux 的权限问题可能会让你的系统无法存取某些配置文件内容,导致影响到系统的正常使用权。

抛出一个问题,通过 tar 去备份了 /etc 的数据,然后尝试在另一部系统上面复原回来。 复原倒是没问题,但是复原完毕之后,无论如何就是无法正常的登入系统!明明使用单人维护模式去操作系统时,看起来一切正常~但就是无法顺利登入。

其实这个问题倒是很常见!大部分原因就是因为 /etc/shadow 这个密码文件的 SELinux 类型在还原时被更改了!导致系统的登入程序无法顺利的存取它, 才造成无法登入的窘境。

那如何处理呢?简单的处理方式有这几个:

•        通过各种可行的救援方式登入系统,然后修改 /etc/selinux/config 文件,将 SELinux 改成 permissive 模式,重新启动后系统就正常了;

•        在第一次复原系统后,不要立即重新启动!先使用 restorecon -Rv /etc 自动修复一下 SELinux 的类型即可。

•        透过各种可行的方式登入系统,建立 /.autorelabel 文件,重新启动后系统会自动修复 SELinux 的类型,并且又会再次重新启动,之后就正常了。

5.其他常见的压缩和备份工具

5.1 dd命令

5.2 cpio命令

相关推荐