È possibile visualizzare una barra di avanzamento quando si copiano i file nel Terminale usando cp?
È possibile visualizzare una barra di avanzamento quando si copiano i file nel Terminale usando cp?
Risposte:
È possibile utilizzare invece rsync.
rsync --progress /copy/from /copy/to
rsync -P /copy/from /copy/to
equivale al rsync --partial --progress /copy/from /copy/to
quale visualizzerà l'avanzamento della copia e riprenderà il trasferimento se è disconnesso.
-r
bandiera per non saltare le directory
Durante cp
, CtrlTvisualizza la percentuale corrente (almeno su macOS)
Ctrl-t
invia SIGINFO
segnali nello stesso modo in cui Ctrl-c
invia SIGINT
segnali. Ad esempio, è possibile utilizzare un loop in un'altra shell per ripetere ripetutamente kill -INFO
il processo in questione se non si desidera continuare a premere i tasti. Perché è un segnale, funziona anche con altre utility, ad es dd
. Ctrl-t
e SIGINFO
sono ereditati da BSD.
Se stai copiando file o directory di grandi dimensioni utilizzando cp, puoi aprire "Activity Monitor", andare alla scheda "Disco" e cercare il processo "cp". Qui puoi tenere traccia di quanti byte sono stati scritti dall'ultimo avvio, dandoti un'idea approssimativa del progresso. (OS X 10.10).
Spero che sia d'aiuto!
#!/bin/sh
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
Non è perfetto, ma funziona ... inseriscilo in un percorso di directory e chiamalo in modo simile ...
strace
comando al momento in cui questa risposta è stata scritta (luglio 2011), ma sicuramente non lo è oggi.
rsync
invece.