tar 是 Linux 系统中用于文件打包和压缩的核心工具,以下是其详细用法及示例:
- 打包(Archiving):将多个文件 / 目录合并为单个文件(
tar 文件)。
- 压缩(Compression):可选步骤,通过
gzip/bzip2/xz 等算法减小文件体积。
| 选项 |
作用 |
-c |
创建新的归档文件 |
-x |
从归档文件中提取内容 |
-t |
查看归档文件的内容列表 |
-f |
指定归档文件的名称 |
-v |
显示操作的详细过程 |
-z |
使用 gzip 压缩 / 解压缩 |
-j |
使用 bzip2 压缩 / 解压缩 |
-J |
使用 xz 压缩 / 解压缩 |
# 创建未压缩的 tar 包
tar -cvf archive.tar /path/to/dir
# 创建 gzip 压缩包(.tar.gz 或 .tgz)
tar -czvf archive.tar.gz /path/to/dir
# 创建 bzip2 压缩包(.tar.bz2)
tar -cjvf archive.tar.bz2 /path/to/dir
# 创建 xz 压缩包(.tar.xz,压缩率最高)
tar -cJvf archive.tar.xz /path/to/dir
# 解压到当前目录
tar -xvf archive.tar
# 解压到指定目录
tar -xvf archive.tar -C /target/dir
# 解压特定格式的压缩包
tar -xzvf archive.tar.gz # gzip
tar -xjvf archive.tar.bz2 # bzip2
tar -xJvf archive.tar.xz # xz
tar -tvf archive.tar.gz
# 排除 .log 文件和 tmp 目录
tar -czvf backup.tar.gz --exclude='*.log' --exclude='/path/to/tmp' /path/to/backup
tar -rvf archive.tar new_file.txt
tar -czvf images.tar.gz *.jpg *.png
-
保留文件属性:添加 -p 选项。
tar -czpvf backup.tar.gz /etc
- 增量备份:使用 --listed-incremental 选项。
tar -czvf backup.tar.gz --listed-incremental=/path/to/snapshot.snar /data
- 远程传输并解压:结合
ssh 和管道。
# 从远程服务器下载并解压
ssh user@server 'tar -czf - /data' | tar -xzvf -
| 格式 |
扩展名 |
压缩率 |
速度 |
| 未压缩 |
.tar |
0% |
最快 |
gzip |
.tar.gz/.tgz |
中等 |
中等 |
bzip2 |
.tar.bz2 |
较高 |
较慢 |
xz |
.tar.xz |
最高 |
最慢 |
- 权限不足:使用
sudo。
- 解压时提示 "Cannot open: No such file or directory":检查文件路径是否正确。
- 压缩时提示 "file changed as we read it":文件在压缩过程中被修改,可尝试重新操作。
掌握这些用法后,你可以高效管理 Linux 系统中的文件归档和压缩任务。如果需要更复杂的功能,可以查阅 tar 的官方手册(man tar)。