Linux tar命令是Linux系统中用于文件归档和压缩的核心工具之一,其名称来源于“tape archive”(磁带归档),最初设计用于将文件备份到磁带设备,如今已成为Linux/Unix环境下最常用的文件打包和压缩工具之一,tar命令的主要功能是将多个文件或目录合并成一个单一的文件(称为tarball),同时支持通过配合其他压缩工具(如gzip、bzip2、xz等)实现压缩,从而节省存储空间并方便文件传输。

tar命令的基本语法与常用选项
tar命令的基本语法结构为:tar [选项] [文件或目录]
,其中选项决定了tar命令的操作模式(如打包、解包、查看等),以下是常用选项的详细说明:
选项 | 长选项 | 功能说明 |
---|---|---|
-c | --create | 创建新的归档文件(打包) |
-x | --extract | 从归档文件中提取文件(解包) |
-t | --list | 列出归档文件中的内容(不解包) |
-v | --verbose | 显示详细操作过程,打印处理的文件名 |
-f | --file | 指定归档文件的名称(需紧跟文件名,如-f archive.tar ) |
-z | --gzip | 通过gzip工具压缩/解压缩归档文件(后缀通常为.tar.gz) |
-j | --bzip2 | 通过bzip2工具压缩/解压缩归档文件(后缀通常为.tar.bz2) |
-J | --xz | 通过xz工具压缩/解压缩归档文件(后缀通常为.tar.xz) |
-C | --directory | 解包时指定目标目录(如-C /path/to/dir ) |
--exclude | 排除指定文件或目录(如--exclude *.log ) |
tar命令的核心使用场景
打包文件(创建归档文件)
使用-c
选项可以创建归档文件,结合-f
指定输出文件名,将/home/user/docs
目录打包为docs.tar
:
tar -cvf docs.tar /home/user/docs
-v
会显示正在打包的文件列表,便于确认操作进度。
压缩打包文件
tar命令本身不压缩,但可通过调用外部压缩工具实现。

- 使用gzip压缩(推荐,速度快,压缩率适中):
tar -czvf docs.tar.gz /home/user/docs
- 使用bzip2压缩(压缩率更高,但速度较慢):
tar -cjvf docs.tar.bz2 /home/user/docs
- 使用xz压缩(压缩率最高,适合大文件,但速度最慢):
tar -cJvf docs.tar.xz /home/user/docs
解包文件
使用-x
选项解包,需根据压缩格式选择对应选项(如-z
、-j
、-J
)。
- 解压
.tar.gz
文件到当前目录:tar -xzvf docs.tar.gz
- 解压到指定目录(需确保目录存在):
tar -xzvf docs.tar.gz -C /tmp/extract
查看归档文件内容
不解包的情况下,可通过-t
选项查看归档文件中的文件列表。
tar -tzvf docs.tar.gz # 查看gzip压缩的归档文件内容
排除特定文件或目录
在打包时,可通过--exclude
排除不需要的文件,打包/home/user
目录时排除.cache
子目录:
tar -czvf backup.tar.gz --exclude=/home/user/.cache /home/user
追加文件到归档文件
tar命令支持向已存在的归档文件中追加文件(需使用-r
选项,但压缩归档文件不支持追加):

tar -rvf docs.tar new_file.txt # 向docs.tar追加new_file.txt
tar命令的高级技巧
- 增量备份:通过
--listed-incremental
选项配合快照文件实现增量备份,仅备份变化的部分,节省时间和空间。tar --create --file=backup.tar --listed-incremental=/var/log/snapshot.snar /home/user
- 解压到标准输出:结合
-O
选项将文件解压到标准输出,可用于管道操作,解压docs.tar.gz
中的file.txt
并直接查看内容:tar -xzvf docs.tar.gz file.txt -O
- 修复损坏的归档文件:对于轻微损坏的tar文件,可使用
--sparse
选项处理稀疏文件,或通过--checkpoint
选项监控解压进度。
相关问答FAQs
Q1: tar命令与zip命令有什么区别?
A1: tar和zip都是文件打包/压缩工具,但核心区别在于:
- tar:主要功能是“打包”(将多个文件合并为单个文件),压缩需依赖外部工具(如gzip),且保留文件权限、时间戳等元数据,更适合Linux/Unix系统下的备份和归档。
- zip:集成打包和压缩功能(使用DEFLATE算法),跨平台支持更好(Windows、macOS、Linux均可直接解压),但压缩率通常低于gzip/bzip2,且会丢失部分Unix文件权限信息。
tar更适合Linux系统内的备份和归档,zip更适合跨平台文件传输。
Q2: 如何解压部分文件从tar归档中?
A2: 解压部分文件时,需在命令中指定文件路径(相对于归档根目录),从docs.tar.gz
中解压/home/user/docs/report.txt
:
tar -xzvf docs.tar.gz home/user/docs/report.txt
若文件名包含通配符(如解压所有.log
文件),需使用--wildcards
选项:
tar -xzvf docs.tar.gz --wildcards '*.log'
注意:路径需与归档文件中的存储路径完全一致,可通过tar -t
选项先查看文件列表确认路径。