すでに圧縮されているファイルを圧縮しないようにgzip/bzip2/7z/etcに指示しますか?

すでに圧縮されているファイルを圧縮しないようにgzip/bzip2/7z/etcに指示しますか?

/homeをtarしてbzip2を介してパイプします。しかし、bzip2が圧縮しようとするべきではない、すでに圧縮されているファイル(.jpg、.mp4、.mkv、.webmなど)がたくさんあります。

圧縮できないファイルまたは最小限に圧縮可能なファイルをバックアップしないほどスマートなCLIコンプレッサー(libmagicまたはユーザー列挙拡張機能を介して)がありますか?

数年前にも似たような質問をした方がいましたが、それ以降アップデートになったかはわかりません。 サブディレクトリを使用してディレクトリを圧縮するときに、特定のファイルの圧縮をスキップする(含まれていません)、7zに命令できますか?

ベストアンサー1

あなたのやり方(ファイル圧縮)によると、.tar答えは確かに「いいえ」です。

ファイルを圧縮するために何を使用しても、.tarファイルの内容を知らず、バイナリストリームのみを見ることができ、そのストリームの一部が圧縮できないか、または最小限に圧縮できるかどうかを知る方法はありません。ストリームの内容を理解することが「愚かな」ほど圧縮を実行するコマンドのオプションにtar混同しないでください。tar --create --xz --file some.tar file1tar --create file1 | xz > some.tar

さまざまなタスクを実行できます。

  1. 代わりに、個別に圧縮できるいくつかのコンテナ形式に切り替えることができますが.tar、1つのディレクトリに同様のパターンを持つ小さなファイルが多数ある場合(個別に圧縮されるため)、これは不利です。 zip形式は実際の例です。
  2. 該当する場合は、ファイルをtarファイルに入れる前に圧縮できます。これは、たとえばポイント1の欠点を持つPythonとtarfileモジュールを介してbzip2透過的に実行できます。また、一部のファイルは圧縮されて解凍する必要がないため(バックアップ前にすでに圧縮されているため)、tarファイルから直接抽出することはできません。
  3. tarをそのまま使用し、これが起こるという事実を受け入れ、あまり高くない圧縮を選択してください。gzip//bzip2これにより、xzストリームをあまり強く圧縮せずに別の0.5%圧縮を取得しようとする時間を無駄にしなくなります。起こらないでしょう。

私のサイトに投稿したように、並列圧縮結果xz(tarファイルに限定されない)を見て、スピードアップしたい結果を確認することもできます。xzブログ

おすすめ記事