Linux系统提供了多种文件压缩命令,不同的命令对应不同的压缩算法和文件格式,适用的场景也有所区别。掌握这些常用压缩命令的用法,能帮助我们更高效地管理服务器中的文件。

常用Linux压缩命令详解
1. tar命令
tar是Linux中最常用的打包工具,本身不具备压缩功能,但可以和gzip、bzip2、xz等压缩算法结合使用,实现打包加压缩的效果,生成的文件通常以.tar.gz、.tar.bz2、.tar.xz为后缀。
常用参数说明:
- -c:创建新的打包文件
- -x:从打包文件中提取文件
- -z:使用gzip算法压缩或解压
- -j:使用bzip2算法压缩或解压
- -J:使用xz算法压缩或解压
- -v:显示操作过程
- -f:指定打包或压缩后的文件名
使用示例:
# 打包并压缩为.tar.gz格式 tar -czvf test.tar.gz test_dir/ # 解压.tar.gz格式文件 tar -xzvf test.tar.gz # 打包并压缩为.tar.bz2格式 tar -cjvf test.tar.bz2 test_dir/ # 解压.tar.bz2格式文件 tar -xjvf test.tar.bz2 # 打包并压缩为.tar.xz格式 tar -cJvf test.tar.xz test_dir/ # 解压.tar.xz格式文件 tar -xJvf test.tar.xz
2. gzip命令
gzip是常用的压缩工具,压缩后生成的文件后缀为.gz,它只能压缩单个文件,不能直接压缩目录,如果要压缩目录需要先结合tar打包。
常用参数说明:
- -d:解压文件
- -k:压缩或解压时保留原文件
- -1~-9:压缩级别,1压缩速度最快压缩率最低,9压缩率最高速度最慢,默认是6
使用示例:
# 压缩单个文件,默认会删除原文件 gzip test.txt # 压缩文件并保留原文件 gzip -k test.txt # 指定压缩级别为9压缩文件 gzip -9 test.txt # 解压.gz文件 gzip -d test.txt.gz # 解压文件并保留压缩包 gzip -dk test.txt.gz
3. bzip2命令
bzip2的压缩率通常比gzip更高,压缩后生成的文件后缀为.bz2,同样只能压缩单个文件,不能直接压缩目录。
常用参数说明:
- -d:解压文件
- -k:保留原文件
- -1~-9:压缩级别,默认是9
使用示例:
# 压缩单个文件 bzip2 test.txt # 压缩并保留原文件 bzip2 -k test.txt # 解压.bz2文件 bzip2 -d test.txt.bz2 # 解压并保留压缩包 bzip2 -dk test.txt.bz2
4. xz命令
xz是压缩率较高的压缩工具,压缩后生成的文件后缀为.xz,压缩速度相对较慢,适合对压缩率要求高的场景,同样只能压缩单个文件。
常用参数说明:
- -d:解压文件
- -k:保留原文件
- -1~-9:压缩级别,默认是6
使用示例:
# 压缩单个文件 xz test.txt # 压缩并保留原文件 xz -k test.txt # 解压.xz文件 xz -d test.txt.xz # 解压并保留压缩包 xz -dk test.txt.xz
5. zip命令
zip是跨平台的压缩工具,生成的.zip格式文件在Windows和Linux系统下都可以直接识别,支持直接压缩目录。
常用参数说明:
- -r:递归压缩目录
- -q:静默模式,不显示压缩过程
使用示例:
# 压缩单个文件 zip test.zip test.txt # 递归压缩目录 zip -r test.zip test_dir/ # 解压.zip文件 unzip test.zip # 静默压缩目录 zip -rq test.zip test_dir/
不同压缩命令对比
我们可以通过下表直观对比不同压缩命令的特点:
| 命令 | 压缩格式 | 压缩率 | 压缩速度 | 是否支持目录 |
|---|---|---|---|---|
| gzip | .gz | 中等 | 快 | 否 |
| bzip2 | .bz2 | 较高 | 中等 | 否 |
| xz | .xz | 高 | 慢 | 否 |
| zip | .zip | 中等 | 快 | 是 |
| tar结合压缩算法 | .tar.gz/.tar.bz2/.tar.xz | 对应算法压缩率 | 对应算法速度 | 是 |
使用建议
如果是需要压缩目录,优先选择tar结合对应压缩算法的命令,或者zip命令;如果是跨平台传输文件,优先选择zip命令;如果对压缩率要求高且不着急使用,可以选择xz算法;如果追求压缩速度,gzip是更合适的选择。日常使用中tar -czvf和tar -xzvf是最高频的操作,建议优先熟练掌握。