以下是 Linux 系统中 打包与压缩 的核心操作指南,涵盖常用命令、格式对比及典型场景应用:
一、核心概念
-
打包(Archiving)
- 将多个文件或目录合并为一个文件(如
.tar
),不改变文件体积。 - 常用工具:
tar
(Tape Archive)。
- 将多个文件或目录合并为一个文件(如
-
压缩(Compression)
- 通过算法减少文件体积(如
.gz
、.bz2
),牺牲时间换空间。 - 常用工具:
gzip
、bzip2
、xz
、zip
。
- 通过算法减少文件体积(如
二、常用打包与压缩命令
1. tar
(打包核心工具)
-
基础用法:
# 打包目录为 .tar 文件 tar -cvf archive.tar /path/to/dir# 打包文件(保留权限) tar -cvpf backup.tar file1 config.conf
-
常用选项:
选项 说明 -c
创建归档文件 -x
解包 -v
显示详细过程(Verbose) -f
指定文件名 -p
保留文件权限 -z/j/J
调用 gzip/bzip2/xz 压缩
2. 压缩格式与组合命令
(1) tar.gz
(或 .tgz
)
- 高压缩率,通用性强
# 将 /path/to/dir打包并压缩为 archive.tar.gz tar -czvf archive.tar.gz /path/to/dir# 解压 archive.tar.gz到当前目录 tar -xzvf archive.tar.gz#解压.tar.gz到指定目录“../server” tar zxvf archive.tar.gz -C ../server
(2) tar.bz2
- 更高压缩率,速度较慢
# 打包并压缩为 .tar.bz2 tar -cjvf archive.tar.bz2 /path/to/dir# 解压 .tar.bz2 tar -xjvf archive.tar.bz2
(3) tar.xz
- 最高压缩率,速度最慢
# 打包并压缩为 .tar.xz tar -cJvf archive.tar.xz /path/to/dir# 解压 .tar.xz tar -xJvf archive.tar.xz
(4) zip
/ unzip
- 跨平台兼容性好
# 压缩目录(需安装 zip) zip -r archive.zip /path/to/dir# 解压 .zip unzip archive.zip
三、其他实用工具
1. gzip
/ gunzip
- 仅压缩单个文件(不打包)
gzip file.txt # 生成 file.txt.gz,原文件被删除 gunzip file.txt.gz # 解压恢复 file.txt gzip -k file.txt # 保留原文件
2. bzip2
/ bunzip2
- 压缩率高于 gzip
bzip2 large_log.log # 生成 large_log.log.bz2 bunzip2 large_log.log.bz2
3. 7z
(高压缩率工具)
- 支持分卷压缩、加密等高级功能
# 安装 p7zip sudo apt install p7zip-full # Debian/Ubuntu sudo dnf install p7zip-plugins # Fedora# 压缩为 .7z 7z a archive.7z /path/to/dir# 解压 .7z 7z x archive.7z
四、查看与验证
1. 查看压缩包内容
# 查看 tar.gz 内容
tar -tzvf archive.tar.gz# 查看 zip 内容
unzip -l archive.zip# 查看 gzip 压缩文件内容(不解压)
zcat file.txt.gz
2. 校验压缩包完整性
# 生成校验值
sha256sum archive.tar.gz > checksum.txt# 验证文件
sha256sum -c checksum.txt
五、典型场景与推荐命令
场景 | 推荐命令 | 说明 |
---|---|---|
快速压缩单个文件 | gzip file.txt | 生成 .gz 文件 |
打包目录并压缩 | tar -czvf dir.tar.gz dir/ | 平衡速度与压缩率 |
高压缩率备份大文件 | tar -cJvf backup.tar.xz /data | 牺牲时间换取最大压缩率 |
跨平台共享文件 | zip -r share.zip project/ | 兼容 Windows/macOS |
实时监控日志压缩 | `tail -f log.txt | gzip > log.gz` |
六、注意事项
- 压缩层级选择:
- 日常使用
.tar.gz
或.zip
足够。 - 冷数据归档可选
.tar.xz
或.7z
。
- 日常使用
- 保留原文件:添加
-k
参数(如gzip -k
)。 - 分卷压缩:处理超大文件时用
split
或7z
分卷。split -b 100M large_file.tar.gz part_ # 分割为 100MB 每个文件