Linux实战笔记(三) 文件压缩

大家好,我是半虹,这篇文章来讲 Linux 系统中常用的文件压缩方式


0、序言

在 Linux 系统中,存在许多打包或压缩文件的工具

这篇文章会对一些常用的工具进行分类整理和介绍

如果只是需要知道怎么对不同格式的文件做解压缩,可以直接跳转到本文最后的总结部分

如果希望了解不同压缩工具的使用方法和应用场景,那么可以跟随正文一起进行深入探讨

好了,下面是正文部分


1、tar

tar 命令本质上是用于打包文件,并不会做压缩,其打包的文件通常带有 .tar 后缀


命令格式如下:

tar [OPTION...] [FILE]..

常用参数如下:

短参数长参数作用
-c--create打包指定文件到新的包
-r--append新增指定文件到已有包
-u--update在已有包更新指定文件
--delete在已有包删除指定文件
-t--list列出包中文件
-x--extract还原包中文件
-f--file指定包的名称
-v--verbose显示详细信息

tar 命令在打包之后,可以通过参数调用压缩工具进一步对其进行压缩,使用的参数如下:

短参数长参数压缩工具压缩后的文件后缀
-z--gzipgzip.tar.gz / .tgz
-Z--compresscompress.tar.Z
-j--bzip2bzip2.tar.bz2
-J--xzxz.tar.xz

下面通过一些简单的例子,了解一下常用的参数组合

# 打包所有后缀为 txt 的文件到新的包 packed.tar
tar -cvf packed.tar *.txt

# 新增所有后缀为 png 的文件到已有包 packed.tar
tar -rvf packed.tar *.png

# 更新已有包 packed.tar 所有后缀为 txt 的文件
tar -vf packed.tar --update *.txt

# 删除已有包 packed.tar 所有后缀为 png 的文件
tar -vf packed.tar --delete *.png

# 列出已有包 packed.tar 所有文件
tar -tvf packed.tar

# 还原已有包 packed.tar 所有文件
tar -xvf packed.tar



# 打包并压缩【常用】
tar -zcvf packed.tar.gz *.txt

# 解压并还原【常用】
tar -zxvf packed.tar.gz *.txt

# 实际上对于这种先打包再压缩的文件
# 我们既可以使用上述命令解压并还原
# 同时也可以先用对应工具解压,然后再用 tar 还原或做其它操作

# 解压后缀为 .gz 的文件
gzip -dk xxx.gz

# 解压后缀为 .Z 的文件
gzip -dk xxx.Z

# 解压后缀为 .bz2 的文件
bzip2 -dk xxx.bz2

# 解压后缀为 .xz 的文件
xz -dk xxx.xz

上面提到的四种压缩方式,这里也做一个简单的介绍

压缩方式文件后缀压缩比率压缩速度解压速度使用场景
gzip.gz适中较快较快十分常用,绝大多数系统都有支持
compress.Z较低较快较快极少使用,只会在老系统遇到
bzip2.bz2较高较慢较慢比较常用,特别是在高压缩比场景
xz.xz很高较慢较慢比较常用,特别是在高压缩比场景

如果对压缩比例、压缩速度、解压速度在大多数情况下进行排序,大致如下:

  • 压缩比率:xz > bzip2 > gzip > compress
  • 压缩速度:gzip > compress > bzip2 > xz
  • 解压速度:gzip > compress > bzip2 > xz

对于各压缩算法的使用场景,推荐如下:

  • 如果希望平衡压缩比和解压缩时间,那么推荐选择 gzip
  • 如果追求较高压缩比,不在乎时间,那么推荐选择 bzip2 或者 xz

下面来测试下各个压缩算法的实际表现

就地取服务器上的一个大型前后端项目,包括程序文件、图片资源、文本资源、模型资源等共 4G 大小

对其进行打包之后压缩,各项指标如下:

测试命令压缩算法压缩后的文件大小压缩时间解压时间
time tar -cf xxx.tar ./xxx/3.6G0m6.003s0m24.740s
time tar -zcf xxx.tar.gz ./xxxgzip2.5G2m9.206s0m46.089s
time tar -jcf xxx.tar.bz2 ./xxxbzip22.2G11m4.117s4m45.567s
time tar -Jcf xxx.tar.xz ./xxxxz1.3G20m0.949s1m36.590s

需要注意的是,不同的压缩算法对于不同的文件类型具有很大差异

上述测试旨在提供一个参考,并不能代表所有的情况


2、zip & rar

除了上述用于打包的 tar  以及同步介绍的 gzipcompressbzip2xz 等压缩方式

ziprar 也是很常用的压缩格式,特别是在 Windows 系统上


对于这些 Windows 系统上常用的压缩算法,Linux 也有提供相应的支持

  • 对于 zip 格式,可以使用 zip 命令进行压缩,对应使用 unzip 命令进行解压
  • 对于 rar 格式,可以使用 rar 命令进行压缩,对应使用 unrar 命令进行解压

3、总结

文件后缀压缩命令解压命令
.tartar -cvf xxx.tar ...tar -xvf xxx.tar
.tar.gz / tgztar -zcvf xxx.tar.gz ...tar -zxvf xxx.tar.gz
.tar.bz2tar -jcvf xxx.tar.bz2 ...tar -jxvf xxx.tar.bz2
.tar.xztar -Jcvf xxx.tar.xz ...tar -Jxvf xxx.tar.xz
.gzgzip -k ... gzip -dk xxx.gz
.bz2bzip2 -k ... bzip2 -dk xxx.bz2
.xzxz -k ... xz -dk xxx.xz
.zipzip xxx.zip ...unzip xxx.zip
.rarrar a xxx.rar ...unrar e xxx.rar


好啦,本文到此结束,感谢您的阅读!

如果你觉得这篇文章有需要修改完善的地方,欢迎在评论区留下你宝贵的意见或者建议

如果你觉得这篇文章还不错的话,欢迎点赞、收藏、关注,你的支持是对我最大的鼓励 (/ω\)

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值