web-dev-qa-db-ja.com

どのアーカイブ形式がアーカイブから単一のファイルを効率的に抽出しますか?

Zipファイルから1つのファイルを抽出するのは高速な操作なので、TARにも当てはまると思いましたが、TARファイルに圧縮がない場合でも、ファイルの抽出に時間がかかることがわかりました。 。 OS Xでホームフォルダをバックアップするためにtarを使用していたので、1つのファイルが必要でした。 tarはファイルの場所を認識していないため、抽出する前に300GBのファイル全体をスキャンする必要がありました。これは、TARがほとんどのバックアップシナリオにとってひどいフォーマットであることを意味するので、私のオプションを知りたいです。

では、単一のファイルをすばやく抽出するのに適したアーカイブファイル形式はどれですか?

この質問は実際には圧縮に関するものではありませんが、アーカイブと圧縮(Zipなど)を組み合わせたリスト形式の回答は問題ありません。その場合、「 solidcompression "」が重要になります。

4
oligofren

抽出の速度と効率が主な懸念事項のようです。LinuxまたはmacOSを使用していると想定しているため、特別なファイル属性(Zipおよび7zは無視します)を保持したいと思います。その場合、優れたアーカイブ形式は次のようになります。

  • ext [2/3/4]ファイルシステム-ファイルをどこかにコピーするだけで、1つのファイルを抽出するのは、マウントして読み取るのと同じくらいすばやく簡単です。元のファイル。必要に応じて、アーカイブファイルシステム全体を単一のアーカイブファイル内に配置できます。十分な大きさのファイルを作成し、フォーマットしてマウントするだけです(-o loopオプションはもう必要ありません)。

    長所:

    • 素晴らしいボーナスは、アーカイブファイル全体に暗号化(LUKS)を簡単に追加できること、またはファイルシステムがサポートするその他の暗号化(eCryptFS、EncFSなど)を簡単に追加できることです。

    • Rsyncベースのバックアップソリューションを簡単に使用することもできます。

    • ファイルの追加/削除は簡単です(アーカイブファイル全体のサイズまで)。

    短所:

    • 単一のアーカイブファイルを使用する場合は、ファイルを追加する前にそのサイズを選択する必要があり、サイズは動的に変更されません。
    • 単一のファイルであっても、アーカイブ全体を拡張または縮小することは可能ですが、ファイルシステムを縮小するにはresize2fs、ファイルを縮小するにはtruncateなどのツールが必要です(またはその逆で展開できます)。 )。
  • macOS を使用していて、ext以外のものが好きな場合に備えて、すでに使用しているのと同じファイルシステム。 macOSのmountコマンドは、単一の大きなアーカイブファイルでも機能すると確信しています。

圧縮も必要な場合は、通常、ここでソリッドアーカイブと低速読み取りが役立ちます。一部のファイルシステムは直接圧縮をサポートしています(btrfs、reiserfs/reiser4、ext用に計画されていますか?)が、私は次のようにします。

  • SquashFS -これは圧縮キングである可能性があり、ファイル属性を保存し、単一ファイルの迅速な抽出を可能にします(マウントとブラウジング)実際にはすべてのファイルの)。アーカイブにも最適で、圧縮レベルを調整できるので、使用してください。

    または、増分バックアップおよびオーバーレイマウントと組み合わせて、優れた「部分バックアップだが完全ファイル」ソリューションを実現することもできます。

    短所は、アーカイブのサイズを拡大または縮小したり、ファイルを追加/削除したりすることが不可能なことです。

    または、既存のバックアップ製品(Time Machine?)を使用します。

とにかく7z/Zipのようなアーカイブを本当に使用したいが、ファイル属性を保持したい場合は、各ファイルを個別にtarして(属性を保存して)、個別のtarファイルを7z/Zipアーカイブに保存できます。面倒な追加手順が必要ですが、単一の(tarされた)ファイルを簡単に抽出し、すべてを再圧縮せずにアーカイブを展開または縮小できます(完全なアーカイブでない場合)。

3
Xen2050