Es posible?
El comando estándar coreutils cp
no es compatible con esto. Hay un parche de Gentoo flotando que lo agrega para diferentes versiones, aunque ya no está incluido en Gentoo por alguna razón; la versión para coreutils 6.10 es en su bugzilla , y estoy seguro de que hay muchos otros.
Si no desea parchear cp
, necesita usar algún otro comando. Por ejemplo, rsync
tiene un --progress
flag, para que puedas hacer:
rsync --progress source destination
Si en lugar de copiar, captura los datos y luego redirige stdout al destino (es decir, cat source > destination
), entonces puede usar un programa que mide el rendimiento de la tubería e insertarlo en el medio (cat source | SOME-PROGRAM > destination
); hay un par mencionado en esta pregunta relacionada . El que recomendé fue pv (Pipe Viewer):
Si le das el --rate
marca que mostrará la velocidad de transferencia
Encuentro que usar pv de esta manera funciona bien para ese propósito
pv -p file1 > file2
Los -p
el interruptor muestra el progreso de la transferencia de archivos. Para ver la velocidad de transferencia, agregue -r
interruptor. Si desea ver la tasa de transferencia promedio a lo largo del tiempo, puede usar -a
interruptor.
pv -pra file1 > file2
Sé que esto es bastante viejo, pero ...
Si en realidad no desea mostrar la velocidad, pero solo quiere ver si sucede algo al copiar un archivo grande, también puede usar el comando watch
(también funciona con mv
):
cp /path/to/myfile /path/to/target/myfile
Luego, en otro Shell, o empujando el comando copiar al fondo (por ejemplo, con Ctrl + Z
seguido de bg
), puede verificar el resultado con:
watch "ls -sh1 /path/to/target"
Esto actualizará continuamente la salida de la actualización del comando ls
(por defecto cada 2.0s), mostrando algo como:
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
Hola Otra forma de mostrar la velocidad de transferencia es usar scp
en localhost de esta manera:scp -rv src_folder [email protected]:/dest_folder
Aquí hay un script que usa du
para monitorear el rendimiento. Esto es más independiente de la aplicación y también se hace referencia en https://unix.stackexchange.com/a/301490/183269 . Ejecute el script en el host de destino.
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
}
ejemplo de uso:
[email protected]:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
[email protected]:~$ 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
[email protected]:~$ killall dd; rm /tmp/zero