018 tar命令

命令说明

tar(Tape Archive)是 Linux 最核心的打包工具,可把多个文件/目录打包成一个 .tar 归档,并常配合 gzip/bzip2/xz 压缩,形成 .tar.gz 等格式。

语法

tar [主选项+辅选项]... 文件/目录...
tar {z|j|J}cvf 包名.tar.gz 目录/

常用参数

参数说明
-c创建新归档(Create)
-x解包(eXtract)
-t列出归档内容(List)
-v显示过程(Verbose)
-f指定归档文件名(File),必须紧跟包名
-z同时用 gzip 压缩/解压(.tar.gz / .tgz)
-j同时用 bzip2 压缩/解压(.tar.bz2)
-J同时用 xz 压缩/解压(.tar.xz)
-C 目录切换工作目录,常用于指定解压目标
--exclude打包时排除匹配的文件
-p保留原文件权限
-P保留绝对路径(默认会去掉开头的 /)

使用示例

$ tar cvf backup.tar /etc

打包 /etc 为 backup.tar(不压缩)

$ tar zcvf app.tar.gz /opt/app

打包并用 gzip 压缩

$ tar xvf app.tar.gz

解包到当前目录

$ tar xvf app.tar.gz -C /opt/

解包到指定目录

$ tar tvf app.tar.gz

查看归档内文件列表

$ tar zcvf src.tar.gz --exclude="*.log" src/

打包时排除日志文件

$ tar jcvf big.tar.bz2 data/

用 bzip2 压缩(体积更小、速度更慢)

$ tar zxf app.tar.gz 'app/conf'

只解出归档中的某个子目录

实用技巧

  • 记忆口诀:c 创建、x 解包、t 查看,v 详细、f 文件、z/j/J 选压缩算法。
  • -f 必须紧跟归档名,写成 tar -zfcv 会出错;正确顺序如 tar -zcvf。
  • tar 只打包不压缩,.tar 体积≈原大小;要压缩必须加 -z/-j/-J。
  • 解压 .tar.gz 直接 tar xzf 即可,无需先 gunzip 再 tar xf。
  • 排除目录:tar zcvf b.tar.gz --exclude=cache --exclude="*.tmp" dir/。