两个概念分清楚
- 打包(archiving):多个文件 → 一个文件(不压缩)
- 压缩(compression):减小体积
Linux 习惯:tar 打包 + gzip/bzip2/xz 压缩——两步合一。
tar:打包工具(最常用)
# 打包 + gzip 压缩(最常见)
tar -czvf archive.tar.gz folder/
# ↓
# c=create, z=gzip, v=verbose, f=file
# 解压
tar -xzvf archive.tar.gz
# ↓
# x=extract
# 仅查看不解压
tar -tzvf archive.tar.gz
# 解压到指定目录
tar -xzvf archive.tar.gz -C /tmp/
# 只解压某个文件
tar -xzvf archive.tar.gz folder/file.txt
记法
| 字母 | 含义 |
|---|---|
c |
create(打包) |
x |
extract(解压) |
t |
list(查看) |
z |
gzip |
j |
bzip2(更慢更小) |
J |
xz(最慢最小) |
v |
verbose(显示文件) |
f |
file(指定文件名,必须) |
常见后缀
.tar 只打包不压缩
.tar.gz / .tgz tar + gzip(常用)
.tar.bz2 / .tbz tar + bzip2
.tar.xz tar + xz
.zip zip 格式(跨平台兼容 Windows)
.gz 单文件 gzip
gzip / gunzip:单文件压缩
gzip file.txt # → file.txt.gz(原文件被替换)
gunzip file.txt.gz # → file.txt
gzip -k file.txt # 保留原文件
gzip -d file.txt.gz # 解压(等同 gunzip)
zcat file.txt.gz # 不解压直接看内容
zip / unzip:跨平台兼容
发给 Windows 用户优选 zip。
zip -r archive.zip folder/
unzip archive.zip
unzip -l archive.zip # 列出内容
unzip archive.zip -d /tmp/ # 解压到目录
实战示例
# 备份家目录(排除 cache)
tar --exclude='*/cache/*' -czvf home-backup.tar.gz /home/wadely
# 大目录用 xz 极致压缩
tar -cJvf logs.tar.xz /var/log/
# 不落地直接传到远程
tar -czf - folder/ | ssh user@remote 'tar -xzf - -C /backup/'
# 验证压缩包完整性
gzip -t archive.tar.gz && echo OK
压缩比 / 速度对比(粗略)
| 工具 | 速度 | 压缩比 | 适合 |
|---|---|---|---|
| gzip | 快 | 中 | 日常默认 |
| bzip2 | 中 | 较高 | 文本日志 |
| xz | 慢 | 最高 | 长期归档 |
| zstd | 极快 | 高 | 现代首选(要装) |
新项目可以试试 zstd——速度比 gzip 快,压缩比更好。
sudo apt install zstd
tar --use-compress-program=zstd -cf archive.tar.zst folder/
下一篇:软链接与硬链接的区别。