回答:
使用する rsync --progress [SRC] [DST]
man rsync非常に便利なオプションがたくさんあるので、ページを確認してください。-aアーカイブのための良いスタートですが、それはあなたの正確な要件に依存します。
パイプを介したコピーは、特にファイルベースの場合、コピープロセスを不必要に遅くします。
あなたは使うことができtarたりpaxまたはcpio:
mkdir -p dst &&
(cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -)
vを追加してtar、ファイル名を表示できます。
tar cf -ファイルとそのメタデータを含むストリームを出力します。これはパイプを介してpvに送られtar、進行状況の表示中に他のファイルにそのまま送られ、もう一方tarはそのストリームのデータを抽出します。3つのコマンドはすべて同時に実行され、データを処理します。ディスクには何も保存されず、パイプバッファーとコマンド内部バッファー以外のメモリには何も保存されません。
pv転送するデータ量を知る方法はありません。あなたはその金額の見積もりを持っている場合は、あなたがそれにそれを渡すことができます-sオプション(GNUがdu -sb srcファイルが十分な大きさであれば、あなたに良い近似を与えるだろう)
以下に、進行状況情報を含むディレクトリをコピーするコマンドをいくつか示します。
小さなファイルが多数ある場合:
cp -av sourcedir targetdir | pv -l -s filecount > logfile
これにより、コピーされたファイルの数に基づいて進行状況が報告されます。
/dev/null必要がなければリダイレクトできますlogfile。
取得するには、次のコマンドを使用しますfilecount。
find sourcedir | wc -l
巨大なファイルが少ない場合:
tar c sourcedir | pv -s size | tar x -C targetdir
これは、コピーされたバイトに基づいて進行状況を報告します。
targetdir 存在する必要があります。
取得するには、次のコマンドを使用しますsize。
du -sh sourcedir
rsyncを使用する場合:
rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile
filecount上記のように取得します。
同じシステムでコピーする場合、rsync -a実質的にはと同じcp -aです。rsyncの利点は、ネットワーク経由でコピーする場合、または以前のコピーを更新(または比較)する場合です。
詳細はこちらをご覧ください:
find source-dir -print0 | xargs -0 -I % pv % > dest-dir/%