以下是 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 每個文件