在Linux系统中,文件压缩主要通过命令行工具实现,常用的工具包括`tar`、`gzip`、`bzip2`、`xz`以及`zip`等。以下是具体方法和扩展知识:
1. 使用`tar`归档并压缩
`tar`本身是归档工具,常结合压缩算法使用:
gzip压缩(`.tar.gz`或`.tgz`):
bash
tar -czvf 压缩包名.tar.gz 文件或目录
`-c`表示创建,`-z`启用gzip压缩,`-v`显示进度,`-f`指定文件名。
bzip2压缩(`.tar.bz2`):
bash
tar -cjvf 压缩包名.tar.bz2 文件或目录
`-j`启用bzip2压缩,压缩率通常比gzip更高但速度较慢。
xz压缩(`.tar.xz`):
bash
tar -cJvf 压缩包名.tar.xz 文件或目录
`-J`启用xz压缩,压缩率最高但耗时较长,适合大文件。
2. 单独使用压缩工具
gzip:
bash
gzip 文件名 # 压缩为.gz格式(原文件会被删除)
gunzip 文件名.gz # 解压
支持`-1`(快速)到`-9`(高压缩比)的级别调整。
bzip2:
bash
bzip2 文件名 # 压缩为.bz2格式
bunzip2 文件名.bz2 # 解压
xz:
bash
xz 文件名 # 压缩为.xz格式
unxz 文件名.xz # 解压
3. zip格式(跨平台兼容)
bash
zip -r 压缩包名.zip 文件或目录 # 压缩
unzip 压缩包名.zip # 解压
`-r`递归处理子目录。zip支持加密(`-e`参数)和分卷压缩,适合Windows/Linux共享文件。
4. 多线程加速工具
pigz(并行gzip):
bash
tar -cvf - 目录 | pigz > 压缩包.tar.gz
pbzip2(并行bzip2):
bash
tar -cvf - 目录 | pbzip2 > 压缩包.tar.bz2
5. 特殊场景处理
排除特定文件:
bash
tar -czvf 压缩包.tar.gz --exclude="*.log" 目录
仅压缩新文件(基于时间戳):
bash
find 目录 -type f -newermt "2023-01-01" | tar -czvf new_files.tar.gz -T -
6. 压缩性能与选择建议
速度优先:`gzip -1`或`pigz`。
压缩率优先:`xz -9`或`bzip2 -9`。
兼容性优先:`zip`格式。
大文件分卷:`tar -czvf - 目录 | split -b 2G - 压缩包.tar.gz.`(生成分卷文件)。
注意事项:
压缩前确认磁盘空间足够,尤其处理大文件。
压缩率越高,CPU占用越大,根据硬件选择工具。
使用`-k`参数(如`gzip -k`)可保留原文件。
常用解压命令对应关系:
`.tar.gz` → `tar -xzvf`
`.tar.xz` → `tar -xJvf`
`.zip` → `unzip`
`.7z` → `7z x`(需安装p7zip)