Skip to content

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排除匹配模式的文件

常见用法示例

创建归档文件

  1. 创建 .tar 归档文件(不压缩):
bash
tar -cf archive.tar file1 file2 directory1
  1. 创建 .tar.gz 压缩归档文件:
bash
tar -czf archive.tar.gz file1 file2 directory1
  1. 创建 .tar.bz2 压缩归档文件(压缩率更高但更慢):
bash
tar -cjf archive.tar.bz2 file1 file2 directory1
  1. 创建归档时排除某些文件:
bash
tar -czf archive.tar.gz directory1 --exclude="*.log" --exclude="*.tmp"

提取归档文件

  1. 提取 .tar 归档文件:
bash
tar -xf archive.tar
  1. 提取 .tar.gz 压缩归档文件:
bash
tar -xzf archive.tar.gz
  1. 提取到指定目录:
bash
tar -xzf archive.tar.gz -C /path/to/directory
  1. 只提取特定文件:
bash
tar -xzf archive.tar.gz file1 directory1/file2

查看归档内容

  1. 列出归档文件中的内容:
bash
tar -tf archive.tar
  1. 列出压缩归档文件中的内容:
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

注意事项

  1. 在提取归档文件时要小心,特别是从不受信任的来源获取的归档文件,因为它们可能包含绝对路径或指向父目录的路径。

  2. 使用 -v 选项可以查看处理过程中的详细信息,这对于调试和确认操作非常有用。

  3. 不同系统上的 tar 实现可能略有不同,建议查看系统特定的 tar 手册页以获取更多信息。

bash
man tar
  1. 在某些系统上,tar 命令可以自动检测压缩格式,无需显式指定 -z-j-J 选项。

基于 MIT 许可证发布