rsyncを実行している場合 多数のファイルと複数のレベルのディレクトリがあるディレクトリで、作業量または終了までの時間を見積もることができますか?
-
進行状況オプションは、単一のファイルの転送の進行状況のみを表示し、ソースディレクトリの下のすべてのファイルとディレクトリの転送の進行状況は表示しません。
-
私が推測する1つの方法は、これまでに転送された
ディレクトリを確認し、それをソースと比較することです。
rsync内のファイルとディレクトリの順序を知っていると非常に役立ちます それらを転送します。その
rsyncに関連しているのではないかと思います 複数のスレッドを実行し、各スレッドは何をしますか?それがどの順序を選択するかはわかりません。また、以前のパンの最初の順序の推測は正しくないようです(したがって、私はそれを打ち破ります)。
承認された回答:
rsyncを作成できます -iを使用してファイルごとに1行を印刷します 次に、pv -lを使用します 行数(実際にはファイル数)に基づいて進行状況を報告します。
pvが必要になります (パイプビューア):http://www.ivarch.com/programs/pv.shtml
rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile
次のコマンドを使用して、ファイル数を取得します。
find sourcedir | wc -l
注:このコマンドは、コピーされたファイルの数に基づいて進行状況情報を表示します。これは、小さいファイルが多数ある場合に最適に機能します。巨大なファイルが数個しかない場合は、あまり楽しくありません。
既存のコピーを更新(または比較)するときに進行状況を確認するには:
(詳細:ディレクトリを比較しますが、ファイルの内容は比較しません)
rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile
2番目の-i 等しい場合でも、rsyncはファイルごとに1行を出力します。
-nを追加します 比較します(実際には何もコピーまたは削除しません)。
--deleteを省略します 必要に応じて。
このコマンドは、異なるファイルをリアルタイムで画面に出力します:
rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount |
tee logfile | grep -v "^."
上記のコマンドは、小さいファイルが多数ある場合に最適に機能します。巨大なファイルがほとんどない場合は、rsyncに組み込まれている進行状況レポートのいくつかがさらに役立つ可能性があります。 -Pについては、rsyncのマニュアルページを参照してください。 または--progress または--info=progress2 。ただし、注意してください。これらのオプションは、pvではうまく機能しません。 。または、少なくとも私はその方法を知りませんでした。
サイズに基づいて進捗状況を確認するための大まかな回避策は次のとおりです。
-
df -hを使用してコピーする前に、ターゲットパーティションの空き領域に注意してください。 。 -
du -shを使用してソースディレクトリのサイズに注意してください 。 -
watch df -hを使用します サイズが大きくなるのを見てください。
明らかに、これはコピー時にのみ機能し、更新や比較時には機能しません。