Linux 每日命令(一)压缩与解压缩:tar/bzip2/gz

2021-01-02  本文已影响0人  Jarkata

Linux系统常见的压缩指令

在 Linux 的环境中,压缩文件案的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』,为什么会
有这样的扩展名呢?不是说 Linux 的扩展名没有什么作用吗?

这是因为Linux支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间就无法互通压缩/解压缩了。

所以当下载某个压缩文件后,通过后缀名可知道该档案是由那种压缩指令制作的,从而对应使用解压缩命令。下面列几个常见的压缩文件扩展名:

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

Linux上常见的压缩指令就是gzip与bzip2,至于compress已经退流行了。gzip 是由 GNU 计划所开发的压缩指令,该指令已经取代了 compress 。 后来GNU 又开发出 bzip2 这个压缩比更好的压缩指令。但这些指令通常仅能针对一个档案来压缩与解压缩,如此一来每次压缩与解压缩都要一大堆档案。此时所谓的打包软件tar就很重要了。

tar命令可以将很多档案打包为一个档案,但单纯的tar只是打包而已,也就是将很多档案集结为一个档案。事实上并没有提供压缩的功能。后来GNU计划中将整个tar与压缩的功能结合在一起,从而提供更方便和更强大的压缩与打包功能。

tar

1. 命令概述
tar命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(bzip2和gzip命令)

2. 命令格式

用法:tar [必要参数] [选择参数] [文件] 

3. 常用选项
必要参数:

-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-f 后面接要处理的文件
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性

可选参数:

-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
-p 保留绝对路径,即允许备份数据中含有根目录
-P 保留数据原来的权限和属性
--help 显示帮助信息
--version 显示版本信息

4. 参考示例

解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
解压:tar jxvf FileName.tar.bz
压缩:未知
解压:uncompress FileName.Z
压缩:compress FileName
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName 

gzip, cat

1. 命令概述
gzip可以说是应用度最广的压缩指令之一。目前gzip可以解开compress,zip与gzip等软件压缩的档案。gzip的压缩比要比compress好得多,且可以用winRAR打开gzip压缩的档案。

2. 命令形式

gzip [-cdtv#] 源文件

3. 常用选项

-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理; 
-d :解压缩的参数; 
-t :可以用来检验一个压缩文件的一致性~看看档案有无错误;
-k :保留源文件 
-v :可以显示出原档案/压缩文件案的压缩比等信息; 
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

4. 参考示例

使用zcat命令可以查看经gzip压缩的文本信息,类似于cat命令。

bzip2, bzcat

1. 命令概述
bzip2的压缩比比gzip更好,且用法几乎与gzipi相同。
2. 命令形式

bzip2 [-cdkzv#] 源文件

3. 常用选项

-c :将压缩的过程产生的数据输出到屏幕上 
-d :解压缩的参数 
-k :保留源文件,而不会删除原始的档案
-z :压缩的参数 
-v :可以显示出原档案/压缩文件案的压缩比等信息; 
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

4. 参考示例

compress

1. 命令概述
compress这个压缩指令较为老旧。
compress命令使用“Lempress-Ziv”编码压缩数据文件。compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出".Z"的扩展名,并且源文件将会被删除。当要解压缩时,可执行uncompress指令。事实上uncompress是指向compress的符号连接,因此不论是压缩或解压缩,都可通过compress指令单独完成。

compress命令是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。
2. 命令形式

语法:compress [-dfvcV] [-b maxbits] [file ...]

3. 常用选项

-f:不提示用户,强制覆盖掉目标文件;
-c:将结果送到标准输出,无文件被改变;
-r:递归的操作方式;
-b<压缩效率>:压缩效率是一个介于9~16的数值,预设值为"16",指定愈大的数值,压缩效率就愈高;
-d:对文件进行解压缩而非压缩;
-v:显示指令执行过程;
-V:显示指令版本及程序预设值。

4. 参考示例
4.1 压缩passwd文件

[deng@localhost test]$ compress passwd 
[deng@localhost test]$ ls
passwd.Z
[deng@localhost test]$ 

4.2 解压缩passwd.Z文件

[deng@localhost test]$ compress -d passwd.Z
[deng@localhost test]$ ls
passwd
[deng@localhost test]$ 

4.3 压缩passwd文件,并且不删除原始文件

[deng@localhost test]$ compress -c passwd  > passwd.Z
[deng@localhost test]$ ls
passwd  passwd.Z
[deng@localhost test]$ 

4.4 压缩passwd文件并显示压缩比例

[deng@localhost test]$ compress -v passwd 
passwd:  -- replaced with passwd.Z Compression: 45.11%
[deng@localhost test]$ ls
passwd.Z
[deng@localhost test]$ 

4.5 压缩passwd文件,指定压缩效率为12

[deng@localhost test]$ compress -b 12 passwd 
[deng@localhost test]$ ls
passwd.Z

4.6 压缩passwd文件,如果压缩文件已经存在,则执行强制压缩

[deng@localhost test]$ compress -f passwd 
[deng@localhost test]$ ls
passwd.Z
[deng@localhost test]$ 

参考

上一篇 下一篇

猜你喜欢

热点阅读