Tar

tar create:如何避免在終端中顯示“tar:從成員名稱中刪除前導 `/’”消息?

  • October 31, 2022

關於tar命令

如果執行命令:

tar -czf numbers.tar.gz numbers

numbers.tar.gz文件是從numbers- 在目前目錄中創建的

但出於腳本目的- 通過測試 - 如果執行:

tar -czf ~/numbers.tar.gz /home/username/numbers
tar -czf /home/username/numbers.tar.gz /home/username/numbers

這兩個命令按預期工作,但總是出現以下消息:

  • “tar:從成員名稱中刪除前導 `/’”

發生這種情況是因為至少有一條路徑 - 在這種情況下,兩者都具有/包含該/字元。我知道這不是錯誤,但很好奇

問題

  • 如何避免在終端中顯示“tar:從成員名稱中刪除前導 `/’”消息?

我假設它是資訊警告消息,出於腳本目的,需要它定義tar.gz要創建的路徑和directory要壓縮的源 - 我不想在終端中看到該消息。有可能嗎?有什麼選擇?

將絕對路徑作為存檔成員是一個壞主意。這就是為什麼 GNU在預設情況下tar實際上刪除了首字母/(從存檔成員名稱和硬連結目標中,如果有的話)。

如果您很高興進行tar剝離但想刪除警告,您可以自己進行剝離:

tar -C / -czf ~/numbers.tar.gz home/username/numbers

或者:

tar -C /home/username -czf ~/numbers.tar.gz numbers

對於存檔成員,numbers/file而不是home/username/numbers/file.

您可以告訴tar不要使用--absolute-names/進行剝離,-P在這種情況下,您將/home/username/numbers/file成為存檔成員。

在提取時,大多數tar實現也會/預設去除該前導作為安全措施。如果您從/tmp/test目錄中提取它,文件將被提取為/tmp/test/home/username/numbers/file它們是否儲存在存檔中為home/username/numbers/fileor /home/username/numbers/file,除非您再次傳遞-P/--absolute-names選項(儘管如果您確實想要路徑,則執行 acd /或傳遞 a-C /會更有意義被解釋為相對於根,與絕對路徑相同)。

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