Linux

tar + gz 文件夾中的文件按原樣放置在所有子文件夾中

  • September 6, 2018

我們要 tar.gz 以下所有 jars 文件

2.6.4.0-91/spark2/jars/super-csv-2.2.0.jar
2.6.4.0-91/spark2/jars/univocity-parsers-2.2.1.jar
2.6.4.0-91/spark2/jars/validation-api-1.1.0.Final.jar
2.6.4.0-91/spark2/jars/xbean-asm5-shaded-4.4.jar
2.6.4.0-91/spark2/jars/xercesImpl-2.9.1.jar
2.6.4.0-91/spark2/jars/xmlenc-0.52.jar
2.6.4.0-91/spark2/jars/xz-1.0.jar
2.6.4.0-91/spark2/jars/zookeeper-3.4.6.2.6.4.0-91.jar

所以我做以下

cd /var/tmp
tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars

但是當我這樣做時

tar xvf archive.tar.gz

我們得到 usr 文件夾

usr 

而預期的結果應該只是罐子(沒有子文件夾)

   super-csv-2.2.0.jar
   univocity-parsers-2.2.1.jar
   validation-api-1.1.0.Final.jar
   xbean-asm5-shaded-4.4.jar
   xercesImpl-2.9.1.jar
   jxmlenc-0.52.jar
   xz-1.0.jar
   zookeeper-3.4.6.2.6.4.0-91.jar

我的語法有什麼問題

cd /var/tmp
tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars

在開始歸檔文件之前,使用-C選項讓 tar進入目錄:chdir

tar -czf archive.tar.gz -C /usr/hdp/2.6.4.0-91/spark2/jars .

不要忘記點作為最後一個參數

請注意,參數之後的第一個f參數是要將存檔輸出到的文件名,以下選項-C將目錄名作為參數(其中 tar chdirs to),然後點是開始存檔的目錄。

tar儲存在命令行上傳遞的完整路徑。

如果您只想要2.6.4.0-91目錄,cd在呼叫.tar

請記住,在這種情況下,您應該使用該選項指定存檔的結束位置。-C

例如,假設您在/home/user/

cd /usr/hdp/
tar -czvf -C /home/user/archive.tar.gz 2.6.4.0-91/spark2/jars/

引用自:https://unix.stackexchange.com/questions/467254