Linux でコマンドラインを使用して絶対パスを含むファイルを zip 圧縮する方法はありますか?
絶対パスの zip および tar をチェックする Python プログラムがあり、その機能が動作するかどうかを確認するために 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 処理ユーティリティは、これを検出します。