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选项先查看文件列表确认路径。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/416473.html<
