特定のファイル形式ではないフォルダを圧縮し、代わりにgzファイルに含めます。

特定のファイル形式ではないフォルダを圧縮し、代わりにgzファイルに含めます。

tarとpigzを使用してフォルダを圧縮し、バックアップを保存します。このフォルダのサイズは約250GB以上です。このフォルダには、さまざまなサブフォルダにある多数のテキストファイルとログファイル、ISOファイル、zipファイルなど、さまざまなコンテンツが含まれています。このフォルダを完全に圧縮するには約1時間(場合によってはそれ以上)かかります。私は現在私のスクリプトで使用しています。

tar -cf - <data_folder> | pigz -1 > <output_file>.tar.$

ISOとzipファイルの圧縮を除いて圧縮時間を短縮したいと思います。私はそれら(ISOファイルとzipファイル)をgzipファイル(圧縮されていない)に含めたいと思います。

私の質問はこれです:タイプに応じてファイルをオプションで圧縮し、gzip出力に非圧縮ファイルを含めることはできますか?これを試す方法?

ベストアンサー1

いいえ、できません。少なくとも直接的ではありません。

tar圧縮は行われません。 (仮想)ファイルシステムの一部のみを読み込み、ここで凝集力のあるストリームを作成します。その後、このストリームは通常gzip/libzなどの圧縮ツール/ライブラリに渡されます。圧縮された部分は個々のファイルを見たり知ったりしません。によって生成されたストリームを圧縮しますtar。したがって、現在の方法にオプションの圧縮を追加することはできません。

あなたができることは、各ファイルを個別に圧縮し、tarアーカイブに追加してtarアーカイブを徐々に構築することです。これにより、圧縮されていないISOイメージをアーカイブに追加することを選択できます。ただし、tarアーカイブ自体は圧縮されません。したがって、解凍した後は、適切な場合は各ファイルを個別に解凍する必要があります。

isosとzipファイルを圧縮するのに実際にどのくらいの時間が失われますか?ストリーム処理を見るとtar | pigz > <file>そんなに時間を無駄にしないようです。ブロックがディスクに書き込まれ、次のブロックが圧縮され、ストリームが構築されます。同時に発生します。

たぶん戦略を最適化できます。

すべてのisoファイルとzipファイルを専用ディレクトリに配置してから、3つの手順でアーカイブを構築できます。 tarと残りの圧縮、ISOディレクトリの追加、zipディレクトリの追加。結果 アーカイブには、依然として外部アーカイブを解凍し、内部アーカイブを解凍し、解凍する長い抽出プロセスが必要です。しかし、これは個々のファイルを解凍するよりも実現可能です。

それともコマンドを調整しますか?ファイルシステムのtarアーカイブである必要がありますか、それともddパーティション全体のバックアップに使用できますか?パーティション全体をバックアップすると、ディスクから継続的に読み取ることができるという利点があります。これは、ファイルシステムを使用するよりも高速です。大きな塊を処理するように調整できると確信していますpigz。これにより、isoファイルとzipファイルが問題の場合、作業速度が速くなります。また、mbuffer結果をディスクに書き込む前にバッファリング(たとえば)を追加して、メディアアクセスをさらに最適化することもできます。

おすすめ記事