tar 命令使用指南
简介
tar
是一个用于创建、查看和提取归档文件的命令行工具,在 Unix/Linux 系统中广泛使用。它的名称来源于 "Tape Archive",最初设计用于磁带备份,现在已成为文件打包和压缩的标准工具。
基本语法
bash
tar [选项] [归档文件] [文件或目录...]
常用选项
选项 | 描述 |
---|---|
-c | 创建新的归档文件 |
-x | 从归档文件中提取文件 |
-t | 列出归档文件中的内容 |
-f | 指定归档文件名称(必须选项) |
-v | 详细模式,显示处理的文件 |
-z | 使用 gzip 压缩/解压缩 (.tar.gz) |
-j | 使用 bzip2 压缩/解压缩 (.tar.bz2) |
-J | 使用 xz 压缩/解压缩 (.tar.xz) |
-p | 保留文件权限 |
-P | 保留绝对路径 |
--exclude=PATTERN | 排除匹配模式的文件 |
常见用法示例
创建归档文件
- 创建 .tar 归档文件(不压缩):
bash
tar -cf archive.tar file1 file2 directory1
- 创建 .tar.gz 压缩归档文件:
bash
tar -czf archive.tar.gz file1 file2 directory1
- 创建 .tar.bz2 压缩归档文件(压缩率更高但更慢):
bash
tar -cjf archive.tar.bz2 file1 file2 directory1
- 创建归档时排除某些文件:
bash
tar -czf archive.tar.gz directory1 --exclude="*.log" --exclude="*.tmp"
提取归档文件
- 提取 .tar 归档文件:
bash
tar -xf archive.tar
- 提取 .tar.gz 压缩归档文件:
bash
tar -xzf archive.tar.gz
- 提取到指定目录:
bash
tar -xzf archive.tar.gz -C /path/to/directory
- 只提取特定文件:
bash
tar -xzf archive.tar.gz file1 directory1/file2
查看归档内容
- 列出归档文件中的内容:
bash
tar -tf archive.tar
- 列出压缩归档文件中的内容:
bash
tar -tzf archive.tar.gz
高级用法
增量备份
使用 --listed-incremental
选项可以创建增量备份:
bash
# 创建完整备份
tar --create --file=backup.tar --listed-incremental=snapshot.file directory
# 创建增量备份
tar --create --file=backup-inc.tar --listed-incremental=snapshot.file directory
分卷压缩
结合 split
命令可以创建分卷压缩文件:
bash
# 创建分卷压缩文件,每个文件大小为 1GB
tar -cf - directory | split -b 1G - backup.tar.part
# 合并并解压分卷文件
cat backup.tar.part* | tar -xf -
保留文件权限和时间戳
bash
tar -czpf archive.tar.gz directory
常见问题解决
处理长路径名
某些旧版本的 tar 可能无法处理长路径名,可以使用 --format=gnu
或 --format=pax
选项:
bash
tar --format=gnu -czf archive.tar.gz directory
处理符号链接
默认情况下,tar 会跟随符号链接。如果要存储符号链接本身而不是其指向的文件,使用 -h
选项:
bash
tar -czf archive.tar.gz -h directory
注意事项
在提取归档文件时要小心,特别是从不受信任的来源获取的归档文件,因为它们可能包含绝对路径或指向父目录的路径。
使用
-v
选项可以查看处理过程中的详细信息,这对于调试和确认操作非常有用。不同系统上的 tar 实现可能略有不同,建议查看系统特定的 tar 手册页以获取更多信息。
bash
man tar
- 在某些系统上,tar 命令可以自动检测压缩格式,无需显式指定
-z
、-j
或-J
选项。