简介

tar 是 Unix 和类 Unix 系统上的归档打包工具,tar 代表未压缩的 tar 文件。已压缩的 tar 文件则附加数据压缩格式的扩展名,如经过 gzip 压缩后的 tar 文件,扩展名为.tar.gz

新版 tar 已能自动调用多种压缩工具执行压缩。已压缩的 tar 文件也叫 tarball,大部分自由软件的源代码采用 tarball 的形式发布。

由于受到 DOS8.3 文件名格式的限制,常使用下列缩写:

  • .tgz 等价于 .tar.gz
  • .tbz 与 tb2 等价于 .tar.bz2
  • .taz 等价于 .tar.Z
  • .tlz 等价于 .tar.lzma
  • .txz 等价于 .tar.xz

常见参数

  • -f:file = 处理的文件位置
  • -c:create = 创建新 tar 文件
  • -x:extract = 提取文件
  • -v:verbose = 显示详情
  • -t,–list 列出tar文件中包含的文件的信息
  • -z,–gzip,–gunzip,–ungzip 调用gzip执行压缩或解压缩
  • -J,–xz,–lzma 调用XZ Utils执行压缩或解压缩。依赖XZ Utils

归档文件

# 把当前目录的文件a.js 归档到当前目录且名为b.tar的归档文件。
tar -cf b.tar a.js
# 完整写法
tar --create --file b.tar a.js

归档目录下所有文件

tar -cvf /tmp/b.tar -C /source_dir/ .
# 完整写法
tar --create --verbose --file /tmp/b.tar --cd /source_dir/ .

# -C 等同 --cd 等同 --directory

这里添加-C参数,在归档前进入 source_dir 作为工作目录,可以避免把文件路径打包到 tar 包内,提取文件时直接提取到当前目录 (另一方面讲,提取文件时可能覆盖已有文件) 。

tar 包可以创建在系统的临时目录(/tmp/),跟着系统的临时目录清除规则来管理。

排除归档项

通常我们需要排除一些依赖目录或者版本管理目录(.git)。

tar --exclude .git --exclude node_modules -cvf /tmp/b.tar -C ./ . 
# 排除 .git 和 node_modules 目录

提取文件

tar -xvf xxx.tar
# 完整写法
tar --extract --verbose --file xxx.tar

查看包内容

tar -tf ./xxx.tar
# 完整写法
tar --list --file ./xxx.tar

压解缩参数

添加-z参数配合-c-x参数,使用 gzip 进行tar包的压解缩操作。

# 压缩文件
tar -czvf /tmp/b.tar -C ./ . 
# 解压文件
tar -xzvf /tmp/b.tar  /target_dir/ 

参考资料:

> https://zh.wikipedia.org/wiki/Tar