tar 用于创建、查看和提取归档文件(通常与压缩算法结合使用)。
tar 将多个文件和目录打包为一个归档文件(tarball)。它本身不进行压缩,但可以通过参数调用 gzip、bzip2、xz 等压缩工具。常见的扩展名有 .tar(不压缩)、.tar.gz/.tgz(gzip)、.tar.bz2(bzip2)、.tar.xz(xz)。
示例 1:创建 tar 归档
tar -cf project.tar project/
示例 2:创建 gzip 压缩归档
tar -czf project.tar.gz project/
示例 3:创建 bzip2 压缩归档
tar -cjf project.tar.bz2 project/
示例 4:创建 xz 压缩归档
tar -cJf project.tar.xz project/
示例 5:查看归档内容(不解压)
tar -tf project.tar.gz
project/
project/src/
project/src/main.py
project/README.md
示例 6:提取归档
tar -xf project.tar.gz
示例 7:提取到指定目录
tar -xf project.tar.gz -C /tmp/extract/
示例 8:提取单个文件
tar -xf project.tar.gz project/src/main.py
示例 9:创建归档时排除文件
tar -czf backup.tar.gz --exclude='*.log' --exclude='node_modules' project/
示例 10:显示详细信息
tar -czvf project.tar.gz project/
project/
project/src/
project/src/main.py
project/README.md
主操作模式:
| 参数 | 长参数 | 说明 |
|---|---|---|
-c |
--create |
创建新归档 |
-t |
--list |
查看归档内容 |
-x |
--extract |
提取归档 |
-r |
--append |
向归档中追加文件 |
-u |
--update |
更新归档中的文件 |
-d |
--diff |
比较归档与文件系统 |
压缩选项:
| 参数 | 长参数 | 说明 |
|---|---|---|
-z |
--gzip |
使用 gzip 压缩 |
-j |
--bzip2 |
使用 bzip2 压缩 |
-J |
--xz |
使用 xz 压缩 |
-Z |
--compress |
使用 compress 压缩 |
-a |
--auto-compress |
根据扩展名自动选择压缩方式 |
其他选项:
| 参数 | 长参数 | 说明 |
|---|---|---|
-f FILE |
--file=FILE |
指定归档文件名 |
-v |
--verbose |
显示处理文件列表 |
-C DIR |
--directory=DIR |
切换到指定目录操作 |
-p |
--preserve-permissions |
保留文件权限 |
--exclude=PATTERN |
排除匹配模式的文件 | |
--include=PATTERN |
包含匹配模式的文件 | |
--strip-components=N |
提取时忽略前 N 层目录 | |
-P |
--absolute-names |
使用绝对路径(不推荐) |
--totals |
显示总字节数 | |
--wildcards |
在排除/包含模式中使用通配符 |