2012-01-14 4 views
4

異なるパスに2つの同一ファイルを含むzipアーカイブを作成しています。 zipアーカイブフォーマットは、Unixのハードリンクの概念と似たものをサポートしていますか?これは、ファイルを1回だけ保存する(スペースを節約する)ことができますが、そのデータブロブをzipアーカイブ内の2つの異なるパスにインデックス付けすることを意味します。zipアーカイブ内でハードリンクが可能ですか?

ファイル形式がこれをサポートしている場合、Ubuntuの無料ツールを使ってそのようなアーカイブを作成するにはどうすればいいですか?

答えて

7

いいえ、Zip file formatはこれをサポートしていません。これは、ローカルファイルヘッダーには、そのファイルの名前を含むファイルに関する情報が含まれており、その直後にファイルの圧縮データが含まれているためです。 2つの異なるローカルファイルヘッダが同じ圧縮データを指すことはできません。

+0

感謝をリンクします。 – Grampoulos

+0

https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXTによると、UNIXの追加フィールドでは、可変長データフィールドに「シンボリックリンクまたはハードリンク」に関する情報を含めることができます。これは、いくつかの実装がそれをサポートできることを示唆しています。あなたは思いませんか? –

7

@Gregによると、ZIPはハードリンクをサポートしていません。

しかし、わかっていれば、目的は圧縮されたアーカイブのサイズを減らすことです。だから、別の解決策を考えましょう。

異なるアーカイブライブラリの圧縮率を確認する簡単なテストを実行できます。 2つの同一のバイナリファイルを作成し、ZIP、BZ2、RAR、および7zを使用して圧縮しました。

8641969 test.bin 
    8641969 test2.bin 

最初に1つのファイルのみが圧縮されました。 二時間の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は、ジョブの良いをしているようです。 アプリケーションで使用することを検討してください。

実際に必要なものがあるかどうかを確認するために、ファイルで環境をテストする必要があります。また、最適な圧縮率/スピードバランスを得る圧縮レベルを確認するオプションもあります。私は同じくらいの疑いが、私は考えていなかったトリックがあるかもしれません期待していた -

+0

どのようにしてより良い仕事をしていますか?数字が大きいほど良いですか? – user321627

+0

@ user321627数字は圧縮ファイルのサイズなので、アーカイブのサイズが小さいほど良いです。 – Paker

3

tarアーカイブのサポートは、ハード

+1

この回答はあまりにも簡潔です。あなたの主張をリンクと背景情報でバックアップしてください。 – nalply

関連する問題