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 --gzip gzip .tar.gz / .tgz
-Z --compress compress .tar.Z
-j --bzip2 bzip2 .tar.bz2
-J --xz xz .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.6G 0m6.003s 0m24.740s
time tar -zcf xxx.tar.gz ./xxx gzip 2.5G 2m9.206s 0m46.089s
time tar -jcf xxx.tar.bz2 ./xxx bzip2 2.2G 11m4.117s 4m45.567s
time tar -Jcf xxx.tar.xz ./xxx xz 1.3G 20m0.949s 1m36.590s

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

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


2、zip & rar

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

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


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

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

3、总结

文件后缀 压缩命令 解压命令
.tar tar -cvf xxx.tar ... tar -xvf xxx.tar
.tar.gz / tgz tar -zcvf xxx.tar.gz ... tar -zxvf xxx.tar.gz
.tar.bz2 tar -jcvf xxx.tar.bz2 ... tar -jxvf xxx.tar.bz2
.tar.xz tar -Jcvf xxx.tar.xz ... tar -Jxvf xxx.tar.xz
.gz gzip -k ... gzip -dk xxx.gz
.bz2 bzip2 -k ... bzip2 -dk xxx.bz2
.xz xz -k ... xz -dk xxx.xz
.zip zip xxx.zip ... unzip xxx.zip
.rar rar a xxx.rar ... unrar e xxx.rar


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

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

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

你可能感兴趣的:(Linux,Linux,tar,zip,rar,gzip,bzip2,gz)