Linux文件压缩与归档:tar、gzip、zip实战对比

Linux文件压缩与归档:tar、gzip、zip实战对比

你执行tar -czf backup.tar.gz /var/www/html,知道它会把网站文件压缩成一个.tar.gz包。但-c-z-f每个参数代表什么,你不确定。遇到.zip文件时,你又要临时查unzip的用法。

今天把tar、gzip、zip三个工具放在一起,讲清楚各自用途和区别。

先看一个数据

在GitHub的代码仓库中,.tar.gz是最常见的发布包格式,占所有压缩包格式的60%以上,其次是.zip。Linux系统上.tar.gz是事实标准,而Windows生态更习惯.zip

tar:打包,不是压缩

tar是“tape archive”的缩写,它的本职工作是把多个文件合并成一个文件(归档),本身不压缩

bash

# 创建归档(不压缩)
tar -cf archive.tar /var/www/html

# 查看归档内容
tar -tf archive.tar

# 解包
tar -xf archive.tar

参数拆解:-c创建归档,-f指定归档文件名,-t查看内容,-x解包,-v显示详细信息。

单独的.tar文件体积和原文件总和一样,没有压缩效果。实际工作中,我们几乎不会用纯tar,而是配合压缩工具一起使用。

gzip:单文件压缩

gzip是压缩工具,只压缩单个文件,不能打包多个文件。把大文件变小,但没有“合并多个文件”的能力。

bash

# 压缩文件
gzip access.log
# 生成 access.log.gz,原文件被替换

# 解压
gunzip access.log.gz

# 查看压缩文件内容(不解压)
zcat access.log.gz

gzip的压缩率通常在60%-80%(取决于文件类型),对文本类文件(日志、代码)效果显著,对已压缩的图片、视频几乎没有效果。

tar + gzip:黄金组合

tar负责打包,gzip负责压缩,配合使用就是最常见的.tar.gz格式。

bash

# 打包并压缩(创建)
tar -czf archive.tar.gz /var/www/html

参数拆解:-c创建,-z通过gzip压缩,-f指定文件名。

解压时用-x替换-c

bash

tar -xzf archive.tar.gz

zip:跨平台

zip是“打包+压缩”一体的工具,兼容Windows、macOS、Linux。

bash

# 压缩目录
zip -r archive.zip /var/www/html

# 解压
unzip archive.zip -d /目标目录

# 查看内容
unzip -l archive.zip

zip默认不保留Linux文件权限(可执行位、所有者信息)。用tar打包的程序(如编译好的二进制文件)用tar.gz更合适。

三种工具对比总结

对比tar+gzipzip
压缩率较高中等(默认)
跨平台Linux为主全平台
权限保留保留不保留
流式处理支持不支持
适用于备份、程序分发临时共享、跨平台传输

tar+gzip更适合Linux服务器备份和程序分发,zip更适合需要Windows用户打开的临时文件传输。

真实案例

备份服务器上的网站文件,执行tar -czf backup.tar.gz /var/www/html。需要只备份特定目录时,可以用--exclude排除缓存目录:

bash

tar -czf backup.tar.gz --exclude='cache' --exclude='logs' /var/www/html

最后一句

tar和gzip的关系是:tar打包,gzip压缩。zip是打包压缩一步到位。跨平台传文件用zip,Linux服务器备份用tar.gz,临时在命令行看压缩包内容用zcat。搞清楚它们的分工,你就知道在什么场景该用什么工具了。

知识库

网站流量异常怎么办?识别恶意爬虫与正常访客

2026-7-9 18:39:13

知识库

网站迁移后常见问题排查:图片不显示、链接404

2026-7-10 18:24:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧