Linux中常用tar和zip:tar用于保留权限的Linux内部归档(如tar.gz),zip用于跨平台兼容但不保留元数据,gzip则专用于单文件高效压缩。

Linux里最常用的是 tar 和 zip,但它们用途不同:tar 本质是打包工具(可选压缩),zip 是真正意义上的压缩归档工具。选哪个,主要看你要不要跨平台兼容、是否要保留权限和时间戳、或者只是快速传文件。
tar 命令:打包+压缩一站式搞定
tar 本身不压缩,靠搭配 gzip(-z)、bzip2(-j)或 xz(-J)实现压缩。最常用的是 .tar.gz 格式。
- 打包并 gzip 压缩目录:
tar -zcvf archive.tar.gz mydir/ - 只打包不压缩(生成 .tar):
tar -cvf archive.tar mydir/ - 查看压缩包内容:
tar -ztvf archive.tar.gz -
解压到当前目录:
tar -zxvf archive.tar.gz - 解压到指定目录(比如 /tmp):
tar -zxvf archive.tar.gz -C /tmp/ - 排除某些文件再打包:
tar -zcvf backup.tar.gz --exclude="logs" --exclude="*.tmp" /var/www/
zip 命令:跨平台友好,适合发给 Windows 用户
zip 会真正压缩文件,生成的 .zip 在 Windows/mac/Linux 上都能直接双击打开,但不保留 Linux 的权限、属主、符号链接等元信息。
- 压缩整个目录(递归):
zip -r project.zip src/ docs/ README.md - 压缩时跳过某些文件:
zip -r app.zip . -x "*.log" "node_modules/*" - 解压到当前目录:
unzip project.zip - 解压并自动覆盖同名文件:
unzip -o project.zip - 解压到指定文件夹:
unzip project.zip -d /opt/deploy/ - 查看 zip 内容不解压:
unzip -l project.zip
gzip 单文件压缩:简单高效,适合日志类文件
gzip 只能处理单个文件,不能直接压缩目录。常用于压缩日志、配置文件等,速度快、兼容性好。
- 压缩 file.txt → file.txt.gz(原文件被删):
gzip file.txt - 压缩并保留原文件:
gzip -c file.txt > file.txt.gz - 解压:
gunzip file.txt.gz或gzip -d file.txt.gz - 查看压缩率:
gzip -l file.txt.gz
怎么选?几个实用建议
备份系统或迁移项目用 tar.gz:保留权限、软链、时间戳,适合 Linux 环境内部传输。
给协作方发资料或上传到 CI/CD 流水线用 .zip:Windows 用户开箱即用,脚本里也容易处理。
临时压缩单个大文件(如 access.log)用 gzip:快、轻量、无依赖。
注意:tar 不加 -z/-j/-J 就只是打包(体积不变);zip 默认就压缩,无需额外参数。
基本上就这些。










