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

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 文件
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName

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

  • .tar.gz文件和.tgz文件
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
  • .tar.bz2文件
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
  • .gz文件
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
  • .bz2文件
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
  • .bz文件
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
  • .tar.bz文件
解压:tar jxvf FileName.tar.bz
压缩:未知
  • .Z文件
解压:uncompress FileName.Z
压缩:compress FileName
  • .tar.Z文件
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
  • .zip文件
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
  • .rar文件
解压: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]$ 

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容