有沒有辦法透過命令列在 Linux 中壓縮檔案以包含絕對路徑?
我有一個 Python 程序,可以檢查 zip 和 tars 的絕對路徑,並且想建立一個 zip 檔案來檢查該函數是否有效。
我能夠用 tar 成功地做到這一點。我還在 Google 上廣泛搜尋了這個問題的答案,並檢查了 zip 文件和手冊,但還沒有找到明確的答案。
答案1
$> zip file.zip $PWD/test.txt
adding: path/to/test.txt (deflated 5%)
$> unzip -l file.zip
Archive: file.zip
Length Date Time Name
--------- ---------- ----- ----
20 03-11-2019 21:32 path/to/test.txt
--------- -------
20 1 file
還有一個開關:
$> zip -jj file.zip test.txt
adding: test.txt (deflated 5%)
$> unzip -l file.zip
Archive: file.zip
Length Date Time Name
--------- ---------- ----- ----
20 03-11-2019 21:32 path/to/test.txt
--------- -------
20 1 files
它給你完全相同的結果,但如果你一開始/
就不能,但你可以在使用-d
選項解壓縮時指定。
是的!這是一個編輯,我想到也許你在談論 gz、xz、bzip2?如果是這樣,您需要先歸檔它們,它們不像 tar 那樣有檔案系統的概念。 zip、rar、7z,它們都做類似的事情。
答案2
在 ZIP 檔案格式中,檔案路徑始終是相對的,請參閱範例這:
file name: (Variable) The name of the file, with optional relative path. The path stored should not contain a drive or device letter, or a leading slash. All slashes should be forward slashes '/' as opposed to backwards slashes '\' for compatibility with Amiga and Unix file systems etc.
當然,可以修補 ZIP 檔案以強制使用前導斜杠,但所有常規應用程式通常都會受到保護,免受此類明顯的駭客攻擊 (*)。
(*) 一個更煩人的駭客行為是由連續的 0 組成的近乎無限長度的文件,該文件以少數字節進行編碼。解壓縮通常會導致你的機器癱瘓。所有 ZIP 處理實用程式現在都會偵測到這一點。