[Linux] rsyncで進捗を確認する
概要 ¶ rsync を実施する際に進捗を確認したい。 やり方 ¶ 要約 時間経過で変わる可能性のある進捗でもいいなら rsync -a --info=progress2 時間が多少かかっても確実な進捗が欲しいなら rsync -a --info=progress2 --no-inc-recursive 方法1(進捗は適宜でもいいですよ派) ¶ rsync では進捗状況を確認するオプションに ver.3.10 から対応 した。 そのオプションは --info=progress2 である。 rsync - a -- info = progress2 / what / to / backup / where / to / backup このオプションを行うと確かに進捗状況が表示されるようになるのだが、大きな階層構造を持つディレクトリをコピーしようとすると、 進捗状況が刻々と下限修正されてしまい、表示の意味がなくなってしまう。 方法2(最初からしっかりした進捗出してくれないと意味ないよ派) ¶ 進捗表示がずれてしまう問題の原因 ¶ 原因は、 rsync がver.3.0.0から導入したrecursive algorithmというアルゴリズム。 recursive algorithmは転送中にリアルタイムにディレクトリ構造を把握していく非同期な処理であり、 非同期なので最初にきっかりと結果が分かるわけではなく裏でこそこそとディレクトリ構造を把握して進捗状況を正確なものへと更新していく。 もちろん、非同期であるから転送開始自体は速やかに行われるという利点があるのだけど、進捗状況をちゃんと確認したい人間にとっては厄介かも。 そこで --no-inc-recursive ですよ ¶ そこで利用するのが --no-inc-recursive オプション。 rsync - a -- info = progress2 -- no - inc - recursive / what / to / backup / where / to / backup このオプションをつけると、recursive algorithmをオフにすることができる。 このアルゴリズムをオ