Immagina questo scenario. Stai tentando di copiare un file di grandi dimensioni da una directory a un'altra o da un sistema a un altro tramite la riga di comando. Come probabilmente saprai, non vedrai alcuna indicazione dell'attività di copia se stai usando il comando 'cp'. Vedrai solo uno schermo vuoto. Non puoi essere sicuro se il processo di copia è in corso o meno, fino al completamento del processo di copia. In questi casi, puoi utilizzare pv comando per monitorare lo stato di avanzamento dei dati. Il pv, acronimo di p ipe v Ad esempio, il comando consente a un utente di vedere lo stato di avanzamento dei dati attraverso una pipeline, fornendo le seguenti informazioni:
- tempo totale trascorso,
- percentuale completata (con barra di avanzamento),
- velocità di trasmissione attuale,
- dati totali trasferiti,
- e ETA.
In questo breve tutorial, vedremo come e dove utilizzare il comando pv per monitorare l'andamento dei dati in sistemi simili a Unix.
Scarica - Cheat sheet gratuito:"Cheat sheet di Linux Command Line"
Installa pv in Linux
La maggior parte delle moderne distribuzioni Linux viene preinstallata con il comando pv. Nel caso in cui non fosse già installato, puoi installarlo eseguendo il seguente comando dal tuo Terminale a seconda della distribuzione Linux che usi.
Su Arch Linux, Antergos, Manjaro Linux:
$ sudo pacman -S pv
Su RHEL, CentOS, Fedora:
$ sudo yum install pv
Oppure,
$ sudo dnf install pv
Su Debian, Linux Mint, Ubuntu:
$ sudo apt-get install pv
Su SUSE, apri SUSE:
$ sudo zypper in pv
Ora abbiamo installato pv. Lascia che ti mostri alcuni esempi.
Monitoraggio dell'avanzamento dei dati attraverso un tubo utilizzando il comando 'pv'
Guarda l'output del seguente comando:
$ cp CentOS7.iso Downloads/

comando cp
Questo comando copia l'immagine ISO di CentOS 7 in Download directory nel mio sistema locale. Come vedi nell'output sopra, non mostra alcuna barra di avanzamento. Vedrai solo il cursore lampeggiare. Non sappiamo quanto tempo impiegherà il processo di copia. Questo potrebbe essere fastidioso a volte poiché non vediamo alcun segno di quando questo comando verrà completato. È qui che il comando pv viene in aiuto. Il comando pv ti mostrerà lo stato di avanzamento dei comandi Linux e ti mostrerà quando il comando Linux sarà completato. Quindi, puoi lasciare il Terminale e svolgere altre attività e tornare quando l'attività è terminata.
Ora, facciamo lo stesso con pipe viewer (pv) e vediamo qual è l'output.
$ pv CentOS7.iso > Downloads/centos.iso

Monitora l'avanzamento dei dati attraverso un tubo utilizzando il comando 'pv'
Vedi, capisci la differenza? Come ho detto, il comando pv mostra il tempo totale trascorso, la percentuale di completamento (con barra di avanzamento), la velocità di trasmissione attuale, il totale dei dati trasferiti e l'ETA.
Lascia che ti faccia qualche altro esempio.
Possiamo limitare la velocità di trasferimento dei dati utilizzando -L cambiare come mostrato nell'esempio seguente.
$ pv -L 2m CentOS7.iso > Downloads/centos.iso
Il comando precedente limiterà la velocità di trasferimento dei dati a 2 MB al secondo . Guarda il seguente output.

Limita la velocità di trasferimento dei dati usando il comando pv
Se hai più file o directory puoi usare pv con il comando tar come mostrato di seguito:
$ tar c Notebooks/ | pv | tar x -C Documents/
Il comando precedente comprimerà la directory Notebooks, la copierà nella directory Documents e infine estrarrà il contenuto.
Ecco un altro esempio. Questo comando creerà un archivio del file CentOS7.iso e salvarlo nella directory di lavoro corrente.
$ pv CentOS7.iso | zip > centos.zip

crea un file di archivio usando il comando pv
Puoi anche usare pv con il comando dd per copiare file tra directory come di seguito. Questo comando copia il file CentOS7.iso dalla directory corrente alla directory dei download.
$ dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso

usa il comando pv con il comando dd per copiare i file tra le directory
Un altro comando utile per visualizzare lo stato di avanzamento dei dati è dialogo . Possiamo usarlo insieme al comando pv per mostrare lo stato di avanzamento dei dati come di seguito.
$ tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0
Risultato di esempio:

usa il comando dialog con il comando pv per mostrare lo stato di avanzamento dei dati
Per maggiori dettagli, fare riferimento alle pagine man.
$ man pv
Inoltre, consulta la nostra guida precedente per trasferire rapidamente file di grandi dimensioni tra due sistemi remoti tramite rete utilizzando netcat , tar , e pv comandi nei sistemi operativi Linux e Unix.
- Come trasferire rapidamente file di grandi dimensioni in rete in Linux e Unix
Aggiornamento:
La barra di avanzamento per i comandi "cp" e "mv" può essere facilmente aggiunta utilizzando una patch denominata "Copia avanzata" . Per i dettagli, controlla il seguente link.
- Copia avanzata:aggiungi la barra di avanzamento ai comandi cp e mv in Linux