単一の rsync
プログラムを使用してファイルシステムをバックアップします。
これにより、ps
4つのスレッドまたはプロセスがあることがわかりましたrsync
。 2つはR状態(実行中)で、2つはS状態(中断?)です。
$ ps aux | grep rsync
root 14144 0.0 0.0 6008 1868 pts/1 S+ 03:16 0:00 sudo rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root 14145 47.2 0.5 62424 46108 pts/1 R+ 03:16 226:44 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root 14146 0.6 0.2 80052 20584 pts/1 S+ 03:16 2:59 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
root 14147 11.4 0.2 49324 20264 pts/1 S+ 03:16 55:02 rsync -azvv /windows-d/ ./2015.03.07_03:16:05/
ting 16986 0.0 0.0 4392 820 pts/4 S+ 11:16 0:00 grep --color=auto rsync
これにより、3つのプロセスまたはスレッドがpstree
あることがわかりました。rsync
$ pstree | grep rsync
| |-bash---sudo---rsync---rsync---rsync
rsync
複数のスレッドまたはプロセスがあり、1つのプログラムのみを実行するのはなぜですか?
stdout出力から複数のファイルを並列にストリーミングしているようではありません(追加の努力のように見えますか?同時/同時ファイル転送でrsync速度を向上)?
dir1
しかし、宛先を確認したところ、送信されたファイルの全部ではなく一部のみを含む一部のディレクトリ(例:)があることがわかり、rsync
stdoutの出力ではファイルを別のディレクトリ(例:dir2
以下を含むディレクトリ)に転送していると述べました。同じ親ディレクトリdir1
)。後でstdoutに出力して、ファイルdir1
全体ではなく一部のファイルが転送されたディレクトリ(たとえば)の残りのファイルを転送することを示します。
答え1
rsync プログラムは、以下を含む多くの作業を行う必要があります。
- リモートサーバーと同期していないファイルを探す
- どの部分を移動するかを決める
- 「反対側」を更新できるようにデルタを送信します。
必ずしもそうではありませんが、しばしばトランスポートコンポーネントが帯域幅を制限する要素になります。
Rsync はパッチデータを並列に転送しません。しかし、他のデータとのやり取りを作成し、送信する必要がある他のデルタに関する知識を構築します。これを行うために、転送中にスレッドを使用して特定の増分の転送が完了したら、次の増分を転送する準備が整います。
より簡単な方法は、増分転送が完了するのを待ってから、必要な転送について次のファイルを比較することです。次の別のファイルを見つけるには時間がかかる可能性があるため、この間は送信帯域幅は利用されません。