Linux系统提供了丰富的文件打包与压缩工具,不同的工具对应不同的压缩算法和适用场景,用户可以根据实际需求选择合适的命令完成操作。

常用打包压缩格式与对应命令
1. tar打包与压缩
tar本身是打包工具,默认只将多个文件合并为一个归档文件,不压缩,常和gzip、bzip2等压缩工具配合使用,是Linux下最常用的打包压缩方式。
常用参数说明
- -c:创建新的归档文件
- -x:从归档文件中提取文件
- -v:显示操作过程
- -f:指定归档文件名,该参数必须放在所有参数最后
- -z:使用gzip压缩或解压
- -j:使用bzip2压缩或解压
- -C:指定解压目录
使用示例
打包并压缩当前目录下所有txt文件为gzip格式的归档文件:
# 打包压缩为.tar.gz格式 tar -czvf test.tar.gz *.txt # 打包压缩为.tar.bz2格式 tar -cjvf test.tar.bz2 *.txt
解压对应的归档文件:
# 解压.tar.gz文件到当前目录 tar -xzvf test.tar.gz # 解压.tar.bz2文件到/tmp目录 tar -xjvf test.tar.bz2 -C /tmp
2. gzip与gunzip
gzip是常用的单文件压缩工具,压缩后文件后缀为.gz,默认会删除原文件,gunzip是gzip的解压工具。
压缩单个文件示例:
# 压缩file.txt,生成file.txt.gz,原文件会被删除 gzip file.txt # 压缩时保留原文件 gzip -k file.txt
解压.gz文件示例:
# 解压file.txt.gz,生成file.txt,压缩文件会被删除 gunzip file.txt.gz # 解压时保留压缩文件 gunzip -k file.txt.gz
3. zip与unzip
zip格式的压缩文件跨平台兼容性更好,Windows系统也能直接识别,对应的解压工具是unzip。
安装zip和unzip(部分系统默认未安装):
# CentOS/RHEL系统 yum install -y zip unzip # Ubuntu/Debian系统 apt install -y zip unzip
压缩文件示例:
# 压缩单个文件 zip test.zip file.txt # 压缩目录,需要加-r参数递归处理 zip -r dir.zip test_dir/
解压文件示例:
# 解压到当前目录 unzip test.zip # 解压到指定目录 unzip test.zip -d /tmp
不同格式对比
| 格式 | 压缩工具 | 解压工具 | 特点 |
|---|---|---|---|
| .tar | tar -cvf | tar -xvf | 仅打包不压缩,文件体积大 |
| .tar.gz | tar -czvf | tar -xzvf | 压缩速度快,兼容性好,最常用 |
| .tar.bz2 | tar -cjvf | tar -xjvf | 压缩率更高,压缩速度较慢 |
| .gz | gzip | gunzip | 仅支持单文件压缩 |
| .zip | zip | unzip | 跨平台兼容性好,支持目录压缩 |
注意事项
- 使用tar命令时,-f参数必须放在所有参数的最后,后面紧跟文件名,否则会报错
- gzip默认压缩后会删除原文件,如果需要保留原文件,要加-k参数
- 压缩目录时,zip需要加-r参数递归处理,否则只会压缩目录本身,不会包含目录内的文件
- 如果压缩文件较大,压缩过程可能需要等待一段时间,可以通过-v参数查看进度