Linuxは、大規模なファイルのコピー効率を向上させ、時間を節約する方法
Linuxシステムの操作では、マシンの直接コピーを行う場合、大きなファイルに遭遇すると時間がかかります。特に、複数のマシンにファイルを同時にコピーする場合、大きなファイルのコピー効率を高めるにはどんな良い方法がありますか。一緒に勉強しましょう。
ソースマシンからターゲットマシンに1つずつコピーすることができますが、時間も2倍になることがよくあります。あるいは、ソースマシンから複数のターゲットマシンに同時にコピーすることもできますが、ソースマシンの帯域幅などの要因によって、速度が本当に速いとは限りません。
まあ、UNIXツールを使ってもっとよくできます。teeとFIFOを組み合わせると、配布チェーンにある各マシンがファイルを保存し、次のループに配布するファイルの迅速な配布チェーンを形成することができます。
まず,配布チェーンの最後のループとしてターゲットマシンを1台選定し,このマシンではncで傍受(ポートが1234であると仮定)するだけで,パイプを介してpigzで解凍し,パイプを介してtarにデータを渡して分解し続ける.
nc -l 1234| pigz -d | tar xvf -
その後、配布チェーンの末端から上に進み、他のターゲットマシンを設定し、同様にリスニング、解凍、分解を経なければならないが、解凍する前にteeコマンドで名前付きパイプ(FIFO)にデータを出力し、別のshellパイプはこれらの解凍されていないデータを配布チェーンの次のループに同時に配布する。
mkfifo myfifo
nc hostname_of_next_box 1234 nc -l 1234| tee myfifo | pigz -d | tar xvf -
最後に、ソースマシンで配布チェーンを起動し、配布チェーンの第1のループにデータを転送します。
tar cv some_files | pigz | nc hostname_of_first_box 1234
私のテストでは、配布チェーンの各マシンは約3%-10%の性能(1対1のコピーに対して)を失いましたが、1つずつのコピーや1台のマシンが複数のマシンに同時に配布されることに対して、効率の向上は明らかです。
Linuxが大きなファイルのコピー効率を向上させる方法を紹介しましたが、主にUNIXツールによってファイルの迅速な配布チェーンを形成することで、大きなファイルの迅速なコピーを実現し、効率が大幅に向上しました。