透過命令列使用絕對路徑的 Zip 檔案

透過命令列使用絕對路徑的 Zip 檔案

有沒有辦法透過命令列在 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 處理實用程式現在都會偵測到這一點。

相關內容