linux从入门到精通张帆,Linux基础之压缩与归档工具

压缩出现的原因简析

压缩为什么会诞生?我们可以想象一下如果没有压缩的场景:磁盘不够用了,再买一块扩展;一个游戏10G,下载下来得一整天,我们要上传一个1G电影得1天...买一块硬盘好贵啊,上传下载好耗费时间啊。如果我们可以将游戏压缩到原来的80%,我们就可以节省下来20%的磁盘空间,同时也节省了下载及上传的时耗。所以压缩诞生的目的首先是解决磁盘空间问题,其次也是为了节省我们上传下载的时耗问题。

看起来它的出现真的是好的无以复加,不过它也有它的不足,压缩必定伴随着压缩这个过程,同样若是想要解压也需要解压这个过程,这个过程需要占用大量CPU的时间,我们应该会有这种感受,当我们压缩或解压缩大文件时,个人PC会很卡,因为当前的较多CPU资源都用于处理压缩或解压这个进程。

所以压缩的出现是与现实的妥协与折中的产物,我们节省了磁盘空间,减少了上传下载时耗,但我们却会在解压或压缩时增加了CPU的负担。

实验环境为CentOS7.2

压缩及解压工具(包括归档工具tar及cpio)

下面我们就来了解下Linux中的压缩解压缩及归档工具

它主要有如下几种:

compress/uncompress: .Z   很久之前使用的一款压缩与解压工具,现在几乎消失踪迹(本文不予介绍)

gzip/gunzip: .gz   现在Linux系统中使用范围最广的压缩与解压工具

bzip2/bunzip2: .bz2 在gzip之后出现,因其压缩比并没有明显提升,因此使用的并不太多

xz/unxz: .xz      最近出现的压缩与解压工具,因其压缩比较之gzip有了明显的提高,因此近来其用人数越来越多,兴许它可以取代gzip的地位

zip/unzip          这款压缩与解压工具的兼容性更好,它的平台很广,Unix,Windows,Linux,Mac等都可以使用。

tar, cpio          此为归档工具,tar用的最广,cpio一般不用(这里不予介绍)

…………………………………………………………………………………………………………

gzip/gunzip/zcat

gzip、gunzip、zcat:compress or expand files

注:默认压缩后删除原文件

命令使用格式:

gzip [OPTION]... FILE ...

常用选项:

-d: 解压缩,相当于gunzip

-c: 将结果输出至标准输出;压缩后保留原文件

其格式为:gzip -C FILE > /PATH/TO/SOMEFILE.gz

-#:1-9,指定压缩比,数字越大压缩比越大;默认为6,通常不建议指定压缩比。

zcat:不显式展开的前提下查看文本文件内容;

…………………………………………………………………………………………………………

命令演示:

我们把/var/log/message文件拷贝到/test文件夹内[root@localhost test]# ll -h

总用量 2.5M

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

[root@localhost test]# gzip messages

[root@localhost test]# ll -h

总用量 196K

-rw-------. 1 root root 194K 8月  19 16:33 messages.gz

[root@localhost test]# zcat messages.gz

Aug 14 11:39:15 centos7 avahi-daemon[905]: Invalid response packet from host 10.1.252.

7.

Aug 14 11:39:16 centos7 avahi-daemon[905]: Invalid response packet from host 10.1.252.

7.

...

[root@localhost test]# gzip -d messages.gz

[root@localhost test]# ll -h

总用量 2.5M

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

上面演示了压缩,zcat,解压的过程,这个过程还说明了在压缩文件后会默认将原文件删除,并且解压后自动会为原文件加上.gz后缀,本来文件后缀对Linux没有意义,但是压缩是个例外。

下面再演示下指定压缩比及压缩后保留原文件的操作。[root@localhost test]# gzip -9 -c messages > /test/message1.gz

[root@localhost test]# ll -h

总用量 2.7M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

对比两个实验结果可以发现大的压缩比确实可以减少占的磁盘空间,但是默认的6与指定的9相差并不大,因此实际工作中一般不指定文件的压缩比。

…………………………………………………………………………………………………………

bzip2/bunzip2/bzcat

命令使用格式:

bzip2 [OPTION]... FILE ...

常用选项:

-k: keep, 保留原文件;其bzip -k FILE即可

-d:解压缩,相当于bzip2

-#:1-9,指定压缩比,数字越大压缩比越大;默认为6,通常不建议指定压缩比。

bzcat:不显式展开的前提下查看文本文件内容;

…………………………………………………………………………………………………………

命令演示:[root@localhost test]# bzip2 messages

[root@localhost test]# ll -h

总用量 316K

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

可以看出来bzip2确实比gzip的压缩比好。[root@localhost test]# bzip2 -d messages.bz2

[root@localhost test]# ll -h

总用量 2.7M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

[root@localhost test]# bzip2 -k messages

[root@localhost test]# ll -h

总用量 2.8M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

[root@localhost test]# bzcat messages.bz2 | more

Aug 14 11:39:15 centos7 avahi-daemon[905]: Invalid response packet from host 10.1.252.

7.

Aug 14 11:39:16 centos7 avahi-daemon[905]: Invalid response packet from host 10.1.252.

7.

...

上面为bzip2的解压、留原文件的压缩与bzcat。

…………………………………………………………………………………………………………

xz/unxz/xzcat

命令使用格式:

xz [OPTION]... FILE ...

常用选项:

-k: keep, 保留原文件;表达格式为:xz -k FILE

-d:解压缩,相当于unxz

-#:1-9,指定压缩比,数字越大压缩比越大;默认为6,通常不建议指定压缩比。

xzcat: 不显式展开的前提下查看文本文件内容;

…………………………………………………………………………………………………………

命令演示:[root@localhost test]# xz messages

[root@localhost test]# ll -h

总用量 408K

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

-rw-------. 1 root root  90K 8月  19 16:33 messages.xz

从上面三种压缩工具压缩相同的文件可以明显看到xz的压缩效果最好[root@localhost test]# xz -d messages.xz

[root@localhost test]# ll -h

总用量 2.8M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

[root@localhost test]# xz -k messages

[root@localhost test]# ll -h

总用量 2.9M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 16:33 messages

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

-rw-------. 1 root root  90K 8月  19 16:33 messages.xz

[root@localhost test]# xzcat messages.xz | more

Aug 14 11:39:15 centos7 avahi-daemon[905]: Invalid response packet from host 10.1.252.

7.

...

…………………………………………………………………………………………………………

tarLinux中最常用的归档工具

命令使用格式:

tar [OPTION]...

(1) 创建归档

tar -c -f /PATH/TO/SOMEFILE.tar FILE...

tar -cf /PATH/TO/SOMEFILE.tar FILE...

(2) 查看归档文件中的文件列表

tar -t -f /PATH/TO/SOMEFILE.tar

(3) 展开归档

tar -x -f /PATH/TO/SOMEFILE.tar

tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR

4)结合压缩工具实现:归档并压缩

-j: bzip2,

-jcf 使用bzip2对目标文件夹进行归档并以bzip2格式压缩

-jxf 使用bzip2对.bx2后缀的tar包进行解压并展开归档

-z: gzip,

-zcf使用gzip对目标文件夹进行归档并以gzip格式压缩

-zxf使用gzip对.gz后缀的tar包进行解压并展开归档

-J: xz

-Jcf使用xz对目标文件夹进行归档并以xz格式压缩

-Jxf使用xz对.xz后缀的tar包进行解压并展开归档

…………………………………………………………………………………………………………

命令演示:[root@localhost test]# cp /var/log/messages* ./

[root@localhost test]# ll -h

总用量 16M

-rw-r--r--. 1 root root 188K 8月  19 16:52 message1.gz

-rw-------. 1 root root 2.5M 8月  19 17:14 messages

-rw-------. 1 root root 1.1M 8月  19 17:14 messages-20160724

-rw-------. 1 root root 1.4M 8月  19 17:14 messages-20160731

-rw-------. 1 root root 4.4M 8月  19 17:14 messages-20160807

-rw-------. 1 root root 6.1M 8月  19 17:14 messages-20160814

-rw-------. 1 root root 128K 8月  19 16:33 messages.bz2

-rw-------. 1 root root  90K 8月  19 16:33 messages.xz

[root@localhost test]# mkdir test

[root@localhost test]# mv message* test/

[root@localhost test]# ll

总用量 4

drwxr-xr-x. 2 root root 4096 8月  19 17:14 test

先从/var/log/message文件夹下拷贝一些文件,之后在原路径下创建一新文件夹再将这些文件转移其中

下面开始归档操作[root@localhost test]# tar -cf /test/message1.tar test/

[root@localhost test]# ll -h

总用量 16M

-rw-r--r--. 1 root root  16M 8月  19 17:16 message1.tar

drwxr-xr-x. 2 root root 4.0K 8月  19 17:14 test

归档后总大小并没有减小,通常反而会大一点,所以一般在归档后进行压缩。[root@localhost test]# tar -t -f /test/message1.tar

test/

test/message1.gz

test/messages

test/messages-20160724

test/messages-20160731

test/messages-20160807

test/messages-20160814

test/messages.bz2

test/messages.xz

[root@localhost test]# xz message1.tar

[root@localhost test]# ll -h

总用量 896K

-rw-r--r--. 1 root root 890K 8月  19 17:16 message1.tar.xz

drwxr-xr-x. 2 root root 4.0K 8月  19 17:14 test

这里16M文件被xz工具压缩至890K。[root@localhost test]# rm -rf test/

[root@localhost test]# ll

总用量 892

-rw-r--r--. 1 root root 910960 8月  19 17:16 message1.tar.xz

[root@localhost test]# tar -xf message1.tar.xz

[root@localhost test]# ll -h

总用量 896K

-rw-r--r--. 1 root root 890K 8月  19 17:16 message1.tar.xz

drwxr-xr-x. 2 root root 4.0K 8月  19 17:14 test

这里使用tar -xf为什么不加前缀J?因为tar在展开归档时会自动检测指定要展开的压缩包,命令会根据后缀自动选择相应的工具进行解压。

本文总结

1、文件的后缀原本对Linux系统无实际意义,但在压缩解压是个例外

2、gzip、bzip2、xz都只支持压缩文件无法压缩目录,若要对目录进行压缩则需先进行归档之后对归档的文件进行压缩。

3、tar只能对文件归档不能压缩解压操作不过它可以调用gzip、bzip2、xz实现归档压缩及解压并展开归档。

4、tar仅仅做归档操作,其产生的tar包大于等于原来的文件夹大小。

5、tar展开压缩归档文件无需事先指明要解压扩展的文件的压缩工具,因为其可以自动识别。

6、压缩及解压缩是以牺牲CPU时间为代价节省磁盘空间及传输文件时间,若是压缩解压10MB以上的文件,可以明显感觉到命令执行时间变长。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值