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

參考資料