Linux命令之压缩文件(gzip、bzip2、xz)

本文介绍了Linux系统中常见的文件压缩指令,包括gzip、bzip2和xz。通过压缩原理的解释,阐述了压缩文件为何能减小磁盘空间。详细讲解了各指令的参数和使用示例,帮助读者掌握Linux文件压缩技术。
摘要由CSDN通过智能技术生成

本文将会学到的命令

  1. gzip
  2. bzip2
  3. xz

文件压缩的原理

目前我们使用的计算机系统都是使用所谓的bytes单位来计量的,不过事实上,计算机最小的计量单位应该是bits才对。此外,我们知道1 byte = 8 bits。但是,如果今天我们只是记忆一个数字 1 ,电脑会如何记录呢,由于 1 byte = 8 bits,所以每个byte当中会有8个空格,而每个空格可以是0,1,由于我们记录的数字是1,考虑计算机所谓的二进制,如此一来,1会在最右边占据1个bit,而其他的7个bits将会自动的被填上0,其实那7个bits应该是空的才对,不过,为了满足目前我们的操作系统数据的存取,所以就会将该数据转为byte的形态来记录。而一些聪明的计算机工程师就利用一些复杂的计算方式,将这些没有用到的空间丢出来,以让文件占用的空间变小,这就是压缩的技术

另外一种压缩技术是将重复的数据进行统计记录。举例来说,如果数据为[1111…]共有100个1时,那么压缩技术就会记录为“100个1”而不是真的有100个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压缩过

##gzip ,zcat/zmore/zless/zgrep

gzip可以解开compress,zip与gzip等软件所压缩的文件。至于gzip所建立的压缩文件为*.gz的文件名。

gzip命令的常用参数如下:

  • -c:将压缩的数据输出到屏幕上,可透过数据流重导向来处理
  • -d:解压缩的参数
  • -t:可以用来检验一个压缩文件的一致性,看看文件有没有错误
  • -v:可以显示出原文件/压缩文件的压缩比等信息
  • -#:#是数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,预设是-6

以下是gzip的使用示例

#1.找出/etc底下(不含子目录)容量最大的文件,并将它复制到/tmp,然后以gzip压缩
[test@fgr ~]$ ls -ldSr /etc/*
。。。
-rw-r--r--.  1 root root    51787 5月  15 2013 /etc/mime.types
-rw-r--r--.  1 root root    91171 4月  19 15:05 /etc/ld.so.cache
-rw-r--r--.  1 root root   670293 6月   7 2013 /etc/services
[test@fgr ~]$ cd /tmp
[test@fgr tmp]$ cp /etc/services .
[test@fgr tmp]$ gzip -v services
services:        79.7% -- replaced with services.gz
[test@fgr tmp]$ ll /etc/services /tmp/services*
-rw-r--r--. 1 root root 670293 6月   7 2013 /etc/services
-rw-r--r--. 1 test test 136088 4月  19 18:44 /tmp/services.gz

当使用gzip进行压缩时,在默认情况下原本的文件会被压缩为.gz的文件名,原文件就不在存在了。

#2.由于services是文本文件,所以可以使用zcat、zmore、zless、zgrep读取其中的内容
[test@fgr tmp]$ zless services.gz 
# /etc/services:
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值