異なるパスにある2つの同一ファイルを含むzipアーカイブを作成しています。zipアーカイブ形式は、Unixのハードリンクの概念に似たものをサポートしていますか?これは、ファイルを1回だけ保存する機能(スペースを節約する機能)を意味しますが、そのデータBLOBをzipアーカイブ内の2つの異なるパスにインデックス付けします。
ファイル形式がこれをサポートしている場合、Ubuntuの無料ツールを使用してそのようなアーカイブを作成するにはどうすればよいですか?
異なるパスにある2つの同一ファイルを含むzipアーカイブを作成しています。zipアーカイブ形式は、Unixのハードリンクの概念に似たものをサポートしていますか?これは、ファイルを1回だけ保存する機能(スペースを節約する機能)を意味しますが、そのデータBLOBをzipアーカイブ内の2つの異なるパスにインデックス付けします。
ファイル形式がこれをサポートしている場合、Ubuntuの無料ツールを使用してそのようなアーカイブを作成するにはどうすればよいですか?
@Gregが言ったように、ZIPはハードリンクをサポートしていません。
しかし、私が正しく理解していれば、あなたの目的は圧縮されたアーカイブのサイズを減らすことです。それでは、別の解決策を考えてみましょう。
簡単なテストを実行して、さまざまなアーカイブライブラリの圧縮率を確認しましょう。2つの同一のバイナリファイルを作成し、ZIP、BZ2、RAR、および7zを使用して圧縮しました。
8641969 test.bin
8641969 test2.bin
初めて1つのファイルだけが圧縮されました。2回目は2つのファイルが圧縮されました。
ZIP:
$zip -9 test1.zip test.bin
$zip -9 test2.zip test.bin test2.bin
8636837 test1.zip
17273654 test2.zip
BZIP2:
$export BZIP=--fast
$tar cjf test1.tbz test.bin
$tar cjf test2.tbz test.bin test2.bin
8694997 test1.tbz
17389167 test2.tbz
7z:
$7z a -mx=9 test1.7z test.bin
$7z a -mx=9 test2.7z test.bin test2.bin
8705285 test1.7z
8707054 test2.7z
RAR:
$rar a -m5 test1.rar test.bin
$rar a -m5 test2.rar test.bin test2.bin
8649970 test1.rar
17299916 test2.rar
結論:7zだけがうまく機能しているようです。アプリケーションでの使用を検討してください。
もちろん、ファイルを使用して環境でさらにテストを実行し、本当に必要なものかどうかを確認する必要があります。また、オプションを試して、どのレベルの圧縮で最適な圧縮率/速度のバランスが得られるかを確認することもできます。
いいえ、Zipファイル形式はこれをサポートしていません。これは、ローカルファイルヘッダーに名前などのファイルに関する情報が含まれ、その直後にファイルの圧縮データが含まれているためです。2つの異なるローカルファイルヘッダーが同じ圧縮データを指すことはできません。
tarアーカイブはハードリンクをサポートします