可能ですか?
答え1
標準のcoreutilscp
コマンドはこの機能をサポートしていません。他のバージョンに追加するためのGentooパッチは作業中ですが、何らかの理由でCoreutils 6.10バージョンは含まれなくなりました。バグジラから、そして周辺に他の人もたくさんいると確信しています。
パッチが必要ない場合は、cp
別のコマンドを使用する必要があります。たとえば、次の操作を実行できるフラグがrsync
あります。--progress
rsync --progress source destination
データをコピーしてstdoutをターゲット(たとえばcat source > destination
)にリダイレクトするのではなく、パイプスループットを測定するプログラムを使用して中間(cat source | SOME-PROGRAM > destination
)に挿入できます。この関連質問。私がお勧めする場所はPV(パイプラインビューア):
フラグを指定すると--rate
転送速度が表示されます。
答え2
私はこのようにpvを使用することがこの目的に適していることがわかりました。
pv -p file1 > file2
スイッチには-p
ファイル転送の進行状況が表示されます。転送速度を確認するには、-r
スイッチを追加してください。一定期間の平均転送速度を表示するには、この-a
スイッチを使用できます。
pv -pra file1 > file2
答え3
私はこれが古いことを知っていますが...
実際に速度を表示したくなく、大容量ファイルをコピーしたときに何が起こるのかを確認したい場合は、次のwatch
コマンドを使用します(これも機能しますmv
)。
cp /path/to/myfile /path/to/target/myfile
その後、別のシェルからコピーコマンドをバックグラウンドにプッシュするか(Ctrl + Z
後ろにbg
)、次を使用して結果を確認できます。
watch "ls -sh1 /path/to/target"
これにより、更新コマンドの出力が継続的に更新されls
(デフォルトでは2.0秒ごとに)、次のようになります。
Every 2.0s: ls -sh1 /path/to/target
Tue Jan 12 15:02:45 2016
total 1.1G
4.0K data
130M tmp1.txt
137M tmp2.txt
151M tmp3.txt
168M tmp4.txt
162M myFile
答え4
du
スループットを監視するスクリプトは次のとおりです。これはアプリケーションに拘束されず、https://unix.stackexchange.com/a/301490/183269。ターゲットホストでスクリプトを実行します。
monitorio () {
# show write speed for file or directory
interval="10"
target="$1"
size=$(du -ks "$target" | awk '{print $1}')
firstrun="1"
echo ""
while [ 1 ]; do
prevsize=$size
size=$(du -ks "$target" | awk '{print $1}')
#size=$(ls -l "$1" | awk '{print $5/1024}')
kb=$((${size} - ${prevsize}))
kbmin=$((${kb}* (60/${interval}) ))
kbhour=$((${kbmin}*60))
# exit if this is not first loop & file size has not changed
if [ $firstrun -ne 1 ] && [ $kb -eq 0 ]; then break; fi
echo -e "\e[1A $target changed ${kb}KB ${kbmin}KB/min ${kbhour}KB/hour size: ${size}KB"
firstrun=0
sleep $interval
done
}
使用例:
user@host:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
user@host:~$ monitorio /tmp/zero
/tmp/zero changed 4KB 24KB/min 1440KB/hour size: 4164KB
/tmp/zero changed 9168KB 55008KB/min 3300480KB/hour size: 13332KB
/tmp/zero changed 9276KB 55656KB/min 3339360KB/hour size: 22608KB
/tmp/zero changed 8856KB 53136KB/min 3188160KB/hour size: 31464KB
^C
user@host:~$ killall dd; rm /tmp/zero