これは可能ですか?
標準のcoreutils cp
コマンドはこれをサポートしていません。 Gentooには、さまざまなバージョンに追加されるGentooパッチが浮かんでいますが、何らかの理由でGentooには含まれていません。 coreutils 6.10のバージョンは bugzillaで で、他にもたくさんあると思います。
cp
にパッチを適用しない場合は、他のコマンドを使用する必要があります。たとえば、rsync
には--progress
フラグなので、次のことができます。
rsync --progress source destination
コピーする代わりにデータをcatし、stdoutを宛先にリダイレクトする場合(つまり、cat source > destination
)の場合、パイプのスループットを測定し、途中に挿入するプログラムを使用できます(cat source | SOME-PROGRAM > destination
); この関連する質問 で言及されているカップルがあります。私がお勧めしたのは pv (パイプビューア)です。
--rate
フラグは転送速度を示します
この方法でpvを使用すると、その目的にうまく機能することがわかりました
pv -p file1 > file2
-p
スイッチは、ファイル転送の進行状況を表示します。転送速度を確認するには、-r
スイッチ。時間の経過に伴う平均転送速度を確認したい場合は、-a
スイッチ。
pv -pra file1 > file2
これはかなり古いですが...
実際にレートを表示したくないが、大きなファイルのコピーで何かが起こっている場合にのみ監視したい場合は、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
こんにちは転送速度を示す別の方法は、次のようにlocalhostでscp
を使用することです。scp -rv src_folder user@localhost:/dest_folder
以下は、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