最速の方法は、多くのファイルを1つに結合します(tar czfは遅すぎます)


23

現在tar czf、バックアップファイルを結合するために実行しています。ファイルは特定のディレクトリにあります。

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

ファイルをより迅速かつスケーラブルに結合する必要があります。

私が見つけたgenisoimagereadomそしてmkisofs。しかし、どれが最速で、それぞれの制限が何であるかはわかりません。


tarここでは、ファイルの読み取りはコストのかかる操作であるため、大きなオーバーヘッドが発生することは疑います。ファイルの保存方法を変更するか、根本的に異なるアプローチを使用する(ファイルシステム全体をコピーする)必要があります。あなたのファイルがどのように構成されているかを知らなければ、私たちはあなたをあまり助けられません。
ジル 'SO-悪であるのをやめる'

5
「noatime」オプションを使用してFSをマウントし、おそらくIO操作を高速化します。
ルーフォエルマグーフォ

2
noatimeの+1、それは本当に大きな違いを生みます。特に通常のハードドライブ、および余分な書き込みを減らすためだけに。
JMベッカー

回答:


25

ほとんどの時間がCPUまたはI / Oに費やされているかどうかを確認する必要があります。いずれにしても、それを改善する方法があります:

A:圧縮しないでください

要件のリストで「圧縮」に言及していなかったため、引数リストから「z」を削除してみてくださいtar cf。これは少し物事をスピードアップするかもしれません。

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

B:ddでパーティション全体をバックアップします

または、パーティション全体をバックアップする場合は、代わりにディスクイメージ全体のコピーを作成します。これにより、処理と多くのディスクヘッドシーク時間が節約されます。tarまた、より高いレベルで動作する他のプログラムには、ディレクトリエントリとiノードを読み取って処理し、ファイルコンテンツの場所を見つけたり、ディスクから別の場所から各ファイルを読み取ったりするヘッドディスクシークを行うオーバーヘッドがあります。

基になるデータをはるかに高速にバックアップするには、次を使用します。

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

(これはRAIDを使用していないことを前提としているため、状況が少し変わる可能性があります)


2
圧縮しないでください。またはpigz、システムに複数のプロセッサが存在する場合は使用してください
ルーフォエルマグーフォ

LZ4 / zstdおよび同様に高速な圧縮アルゴリズムは、より少ないデータを書き込むだけでプロセスを高速化できるかどうかを確認する価値があります(データがまったく圧縮可能な場合)レベルとアルゴリズム、man gzipにも「デフォルトの圧縮レベルは-6」と書かれているため、改善の余地があります。
LiveWireBT

8

他の人が言ったことを繰り返すために:バックアップされているファイルについてもっと知る必要があります。ここでは、いくつかの前提事項について説明します。

tarファイルに追加します

ファイルがディレクトリにのみ追加されている(つまり、ファイルが削除されていない)場合、毎回再作成するのではなく、既存のtarファイルに追加していることを確認してください。これを行うには、tarコマンドで既存のアーカイブファイル名を新しいファイル名ではなく指定するか、古いファイル名を削除します。

別のディスクに書き込む

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

圧縮しないでください

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


4

inのようなlz4 crompressionでtarを使用する

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

両方の長所を提供します(圧縮率と速度がかなり優れています)。データにバイナリファイルが含まれている場合でも、約3の圧縮率が必要です。

さらに読む: 圧縮アルゴリズムの比較 tarでlz4 を使用する方法


1
StefanQが留まっているのは、ボトルネックの場所に応じてコンプレッサーを選択する必要があるということです。また、出力を別の物理ストレージデバイスまたはリモートマシンに保存できることを忘れないでください!
レスターチャン

2

誰もダンプと復元に言及していないことに驚いています。ファイルシステムに空き領域がある場合、ddよりもはるかに高速になります。

問題のファイルシステムに応じて、異なるツールが必要になる場合があることに注意してください。

  • ext2 / 3/4- ダンプ復元(RH / Debianのパッケージダンプ
  • XFS- xfsdumpおよびxfsrestore(RH / Debianのパッケージxfsdump
  • ZFS- zfs sendおよびzfs recv
  • BTRFS- btrfs sendおよびbtrfs receive

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.