一、命令行压缩工具
1. tar命令 - 最常用的归档工具
# 创建.tar归档(仅打包,不压缩)
tar -cf archive.tar file1 file2 directory/
# 创建.tar.gz压缩(gzip压缩)
tar -czf archive.tar.gz file1 file2 directory/
# 创建.tar.bz2压缩(bzip2压缩,压缩率更高)
tar -cjf archive.tar.bz2 file1 file2 directory/
# 创建.tar.xz压缩(xz压缩,压缩率最高)
tar -cJf archive.tar.xz file1 file2 directory/
# 解压缩
tar -xf archive.tar.gz
2. gzip/gunzip - .gz格式
# 压缩文件(会替换原文件)
gzip filename
# 压缩并保留原文件
gzip -c filename > filename.gz
# 解压缩
gunzip filename.gz
3. bzip2/bunzip2 - .bz2格式
# 压缩
bzip2 filename
# 解压缩
bunzip2 filename.bz2
4. zip/unzip - 跨平台.zip格式
# 安装zip工具
sudo dnf install zip unzip
# 压缩文件/目录
zip -r archive.zip file1 directory/
# 加密压缩(添加密码)
zip -re secure.zip file1
# 解压缩
unzip archive.zip
5. 7-Zip - 高压缩率
# 安装
sudo dnf install p7zip
# 压缩
7z a archive.7z file1 directory/
# 解压缩
7z x archive.7z
二、图形界面工具
1. 文件管理器(Nautilus)
- 右键点击文件/文件夹 → "压缩"
- 支持格式:.zip, .tar.gz, .tar.xz等
2. Ark - KDE压缩工具
# 安装
sudo dnf install ark
3. File Roller - GNOME默认压缩工具
# 已预装,或重新安装
sudo dnf install file-roller
三、实用技巧与示例
1. 批量压缩
# 压缩当前目录所有.txt文件
tar -czf text_files.tar.gz *.txt
# 压缩多个特定类型文件
zip images.zip *.jpg *.png
2. 排除特定文件
# 排除node_modules和.git目录
tar -czf project.tar.gz --exclude='node_modules' --exclude='.git' project/
3. 分卷压缩(大文件分割)
# 分割为100MB的文件
tar -czf - large_dir/ | split -b 100M - large_dir.tar.gz.
# 合并分卷
cat large_dir.tar.gz.* | tar -xz
4. 查看压缩内容不解压
# 查看.tar.gz内容
tar -tzf archive.tar.gz
# 查看.zip内容
unzip -l archive.zip
# 查看.7z内容
7z l archive.7z
5. 压缩时显示进度
# 使用pv命令显示进度
tar -czf - large_dir/ | pv > archive.tar.gz
# 安装pv
sudo dnf install pv
四、性能比较与选择建议
| 格式 |
压缩速度 |
压缩率 |
适用场景 |
|---|
| .tar.gz |
快 |
中等 |
日常使用,Linux通用 |
| .tar.xz |
慢 |
最高 |
需要最大压缩率 |
| .tar.bz2 |
中等 |
高 |
平衡选择 |
| .zip |
快 |
低 |
跨平台(Windows/Mac) |
| .7z |
中等 |
很高 |
需要高压缩率 |
五、自动化脚本示例
#!/bin/bash
# 备份脚本示例
BACKUP_NAME="backup_$(date +%Y%m%d_%H%M%S)"
SOURCE_DIR="/home/user/documents"
DEST_DIR="/backup"
# 使用xz压缩,中等压缩级别
tar -cJf "${DEST_DIR}/${BACKUP_NAME}.tar.xz" "${SOURCE_DIR}"
# 删除7天前的备份
find "${DEST_DIR}" -name "*.tar.xz" -mtime +7 -delete
六、常见问题解决
权限问题:使用
sudo或确保对文件有读取权限
磁盘空间不足:先检查可用空间
df -h
文件名编码问题:使用
convmv转换文件名编码
断点续传:对大文件使用rsync或专用工具
选择哪种方法取决于你的具体需求:
- 日常使用:图形界面右键压缩或
tar -czf
- 最大压缩率:使用
tar -cJf(xz格式)
- 跨平台分享:使用zip格式
- 脚本自动化:使用tar配合cron任务
在Fedora中,大多数压缩工具已预装或可通过DNF轻松安装。