複数のファイルを1つにマージする最速の方法(tar czfは遅すぎます)

複数のファイルを1つにマージする最速の方法(tar czfは遅すぎます)

tar czf現在、マージバックアップファイルを実行しています。これらのファイルは特定のディレクトリにあります。

しかし、ファイル数が増えています。使用tzr czf時間が長すぎます(20分以上増え続けます)。

スケーラブルな方法でファイルをすばやくマージする必要があります。

genisoimagereadomを見つけmkisofsたがどれが一番速いのか、それぞれの限界は何なのかわかりません。

答え1

ほとんどの時間がCPUまたはI / Oに費やされていることを確認する必要があります。どちらにしても改善できる方法はいくつかあります。

答え:圧縮しないでください。

要件リストに「圧縮」を記載していないので、パラメータリストから「z」を削除してみてくださいtar cf。これにより、作業が少し速くなる可能性があります。

以前にバックアップされたファイルをスキップするには、「-N」を使用するなど、プロセスを高速化する他の技術があります。

B:ddを使用してパーティション全体をバックアップしてください。

または、パーティション全体をバックアップするには、ディスクイメージ全体をコピーしてください。これにより処理が保存されます。たくさんディスクヘッドの探索時間。tarより高いレベルで動作する他のプログラムには、ファイルの内容の場所を見つけ、より多くのタスクを実行するためにディレクトリエントリとinodeを読み取って処理する必要があるオーバーヘッドがあります。ディスクナビゲーション、ディスク上の別の場所から各ファイルを読み取ります。

基本データをすばやくバックアップするには、次を使用します。

dd bs=16M if=/dev/sda1 of=/another/filesystem

(これはRAIDを使用しないと仮定しているため、状況が若干変わることがあります)

答え2

次のように、lz4圧縮でtarを使用します。

tar cvf - myFolder | lz4 > myFolder.tar.lz4

両方の利点を提供します(非常に優れた圧縮と速度)。データにバイナリファイルが含まれていても、圧縮率は約3と予想されます。

追加資料: 圧縮アルゴリズムの比較 lz4圧縮を使用する方法

答え3

他の人の言葉を繰り返すには、バックアップされるファイルについてもっと知る必要があります。ここではいくつかの仮定をしましょう。

tarファイルに追加

ディレクトリにファイルのみを追加する場合(つまり、ファイルを削除しない場合)、ファイルを毎回再生成するのではなく、既存のtarファイルに追加します。コマンドに新しいファイル名の代わりに既存のアーカイブファイル名を指定しますtar(または古いファイル名を削除するだけです)。

別のディスクへの書き込み

書き込み中の同じディスクからデータを読み取ると、パフォーマンスが低下する可能性があります。 I / O負荷を分散させるには、別のディスクに書き込みます。アーカイブファイルが元のファイルと同じディスクにある必要がある場合は、後で移動します。

圧縮しないでください

@Yvesが言ったことを繰り返します。バックアップファイルがすでに圧縮されている場合は、再圧縮する必要はありません。 CPUサイクルだけを無駄にします。

答え4

誰もダンプや復元について言及しなかったという事実に驚きました。それより良いでしょうDDファイルシステムに空き容量がある場合。

そのファイルシステムによっては、他のツールが必要になる場合があります。

  • 外部2/3/4 -ダンプそしてまた覆う(パックダンプRH/Debianで)
  • XFS-xfs ダンプそしてファイルシステムの復元(パックxfs ダンプRH/Debianで)
  • ZFS-zfsを送信そしてzfs 受信
  • BTRFS-BTRFSを送信そしてBTRFS受信

一部のプログラムには圧縮が組み込まれていません(ダンピングを除く)。必要に応じてstdoutにパイプし、Pigzを使用します。 ;-)

関連情報