Linux
創建不同位置的多個目錄的 tar.gz 存檔——《tar:懦弱拒絕創建空存檔》
我正在嘗試創建一個成就:
$ cd /tmp $ tar -czf test1.tar.gz -C ~/Downloads/dir1 -C ~/Documents/dir2 -C ~/dir3/dir4/dir5
…這應該不會保留其中目錄的完整路徑,因此
-C
結果
tar: Cowardly refusing to create an empty archive Try 'tar --help' or 'tar --usage' for more information.
為什麼?如何解決?
您的命令在概念上等同於:
tar -czf test1.tar.gz -C ~/Downloads/dir1 "" -C ~/Documents/dir2 "" -C ~/dir3/dir4/dir5 ""
用人的話說:
tar -czf test1.tar.gz
: “製作一個以目前工作目錄命名的 gzipped tar 存檔test1.tar.gz
,如下:…”-C ~/Downloads/dir1 ""
:“…首先,切換到目錄~/Downloads/dir1
,並從那裡歸檔任何內容…”-C ~/Documents/dir2 ""
:“……然後,切換到目錄~/Documents/dir2
並從那裡歸檔任何內容……”-C ~/dir3/dir4/dir5 ""
:“……最後,切換到~/dir3/dir4/dir5
並從那裡歸檔任何內容。”你可能想要這樣的東西:
tar -czf test1.tar.gz -C ~/Downloads/dir1 . -C ~/Documents/dir2 . -C ~/dir3/dir4/dir5 .
這將“無存檔”部分替換為“存檔目前目錄的內容”,該部分剛剛切換到使用該
-C
選項。請注意,當您提取生成的存檔時,
dir1
和dir2
的存檔內容dir5
將全部提取到提取時的目前目錄。如果這就是您想要的,那很好,但這是一個稍微不尋常的案例。(這樣的存檔被稱為tar 炸彈,並且在遇到意外時通常不喜歡,因為它不會整齊地提取到由提取過程創建的單個目錄中。)為了解釋起見,這裡有一個稍微不同的命令:
tar -czf test2.tar.gz -C ~/Downloads dir1 -C ~/Documents dir2 -C ~/dir3/dir4 dir5
提取時
test2.tar.gz
會產生:./dir1 ./dir2 ./dir5
…及其內容。