tar 命令 #
tar
命令是一个用于创建、查看和提取归档文件的工具。它的名称来源于"tape archive"(磁带归档),最初设计用于磁带备份。tar
可以将多个文件和目录合并为一个文件,并可以选择性地使用压缩算法。
语法 #
tar [选项] [归档文件] [文件或目录...]
常用选项 #
选项 | 描述 |
---|---|
-c |
创建新归档 |
-x |
从归档中提取文件 |
-t |
列出归档内容 |
-f |
指定归档文件名(几乎总是需要) |
-v |
详细模式,显示处理的文件 |
-z |
使用 gzip 压缩/解压缩 (.tar.gz 或 .tgz) |
-j |
使用 bzip2 压缩/解压缩 (.tar.bz2) |
-J |
使用 xz 压缩/解压缩 (.tar.xz) |
-p |
保留权限 |
-P |
保留绝对路径 |
--exclude=模式 |
排除匹配模式的文件 |
-C 目录 |
更改到指定目录 |
--strip-components=数字 |
提取时跳过指定数量的目录层级 |
常见用法 #
1. 创建 tar 归档(不压缩) #
tar -cf archive.tar file1 file2 directory
2. 创建 tar 归档并使用 gzip 压缩 #
tar -czf archive.tar.gz file1 file2 directory
或
tar -czf archive.tgz file1 file2 directory
3. 创建 tar 归档并使用 bzip2 压缩 #
tar -cjf archive.tar.bz2 file1 file2 directory
4. 创建 tar 归档并使用 xz 压缩 #
tar -cJf archive.tar.xz file1 file2 directory
5. 提取 tar 归档 #
tar -xf archive.tar
6. 提取 gzip 压缩的 tar 归档 #
tar -xzf archive.tar.gz
7. 提取 bzip2 压缩的 tar 归档 #
tar -xjf archive.tar.bz2
8. 提取 xz 压缩的 tar 归档 #
tar -xJf archive.tar.xz
9. 查看归档内容而不提取 #
tar -tf archive.tar
或者详细列出:
tar -tvf archive.tar
10. 提取到特定目录 #
tar -xf archive.tar -C /path/to/directory
11. 提取特定文件 #
tar -xf archive.tar file1 path/to/file2
12. 排除某些文件或目录 #
tar -czf archive.tar.gz directory --exclude=directory/subdirectory --exclude="*.log"
13. 使用通配符 #
tar -czf archive.tar.gz *.txt
14. 保留文件权限和所有权 #
tar -cpzf archive.tar.gz directory
15. 提取时跳过顶层目录 #
tar -xf archive.tar --strip-components=1
16. 追加文件到现有归档 #
tar -rf archive.tar newfile
17. 显示详细进度 #
tar -cvzf archive.tar.gz directory
常见压缩格式和扩展名 #
扩展名 | 压缩类型 | tar 选项 | 描述 |
---|---|---|---|
.tar |
无压缩 | -cf |
仅归档,无压缩 |
.tar.gz 或 .tgz |
gzip | -czf |
较快的压缩,适中的压缩率 |
.tar.bz2 |
bzip2 | -cjf |
较慢的压缩,较高的压缩率 |
.tar.xz |
xz | -cJf |
最慢的压缩,最高的压缩率 |
提示 #
- 使用
-v
选项可以查看处理的文件,这在处理大型归档时很有用 - 使用
-t
选项可以在提取前检查归档内容 - 创建归档时,可以使用相对路径或绝对路径
- 使用
--exclude
选项可以排除不需要的文件或目录 - 使用
-p
选项可以保留文件权限和所有权,这在备份系统文件时很重要 - 使用
-C
选项可以在提取前更改到指定目录 - 使用
--strip-components
选项可以在提取时跳过顶层目录 - 对于大型归档,可以使用
pv
命令显示进度:pv archive.tar.gz | tar -xzf -
- 使用
-a
选项可以根据文件扩展名自动选择压缩格式:tar -caf archive.tar.gz directory # 使用gzip tar -caf archive.tar.bz2 directory # 使用bzip2 tar -caf archive.tar.xz directory # 使用xz