2022-12-27 tar 去掉路径结构

产生测试资料

cd /tmp
mkdir 11/22/33 -p
touch 11/f1
touch 11/22/f2
touch 11/22/33/f3

目录结构

tree tmp
tmp
└── 11
├── 22
│   ├── 33
│   │   └── f3
│   └── f2
└── f1

压缩

一般来说我们会使用zcf指定tar完成后再gzip,我们看看2个指令的差别

指令1

tar -zcf b1.tar.gz tmp/

指令2

cd tmp
tar -zcf ../b2.tar.gz .

压缩完成后看一下目录结构

tar tzf b1.tar.gz
tmp/
tmp/11/
tmp/11/f1
tmp/11/22/
tmp/11/22/f2
tmp/11/22/33/
tmp/11/22/33/f3

tar tzf b2.tar.gz
./
./11/
./11/f1
./11/22/
./11/22/f2
./11/22/33/
./11/22/33/f3

上面看到虽然压缩的内容一样,但会因指定路径的关系造成目录结构的不同,那如果想要消除最上层的目录结构像b2.tar.gz的内容是不是就要切到当前目录进行压缩才行?这答案当然是不需要的,参数上面只要再加上-C(--directory)指定目录路径就能像你自行切到当前目录一样的效果

-C (–directory)

如果要保持b2.tar.gz的结构,在参数上面将原本要cd tmp/的指定换成-C tmp/目录加上,

tar -zcf b3.tar.gz -C tmp/ .

压缩好后看一下结构:

tar tzf b3.tar.gz
./
./11/
./11/f1
./11/22/
./11/22/f2
./11/22/33/
./11/22/33/f3

参考资料