Ricerca nel sito web

Copia avanzata: aggiungi la barra di avanzamento ai comandi cp e mv in Linux


Gli strumenti GNU cp e GNU mv vengono utilizzati per copiare e spostare file e directory nel sistema operativo GNU/Linux. Una caratteristica mancante in queste due utilità è che non mostrano alcuna barra di avanzamento. Se copi un file o una directory di grandi dimensioni, non sai quanto tempo richiederà il completamento del processo di copia o la percentuale di dati copiati. Non vedrai quale file è attualmente in fase di copia o quanti sono già stati copiati. Tutto ciò che vedrai sarà solo il cursore lampeggiante e l'indicatore LED del disco rigido. Grazie a Advanced Copy, una patch per Gnu Coreutils, ora possiamo aggiungere una barra di avanzamento a cp e mvcomandi in Linux e mostra la barra di avanzamento durante la copia e/o lo spostamento di file e directory di grandi dimensioni.

Che cos'è la Copia avanzata?

Advanced Copy è una mod per i programmi GNU cp e GNU mv. Aggiunge una barra di avanzamento e fornisce alcune informazioni su cosa succede mentre copi o sposti file e cartelle. Non solo la barra di avanzamento, mostra anche la velocità di trasferimento dei dati, il tempo rimanente stimato e il nome del file attualmente in fase di copia. Alla fine vedrai un breve riepilogo su quanti file vengono copiati e quanto tempo è necessario per copiare i file.

Installa la patch "Copia avanzata" per aggiungere la barra di avanzamento ai comandi cp e mv in Linux

I comandi cp e mv fanno parte dei GNU coreutils. Quindi devi scaricare gli ultimi GNU coreutils da qui.

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz

Estrai l'archivio scaricato utilizzando il comando:

tar xvJf coreutils-8.32.tar.xz

Questo comando estrarrà l'archivio coreutils in una cartella denominata coreutils-8.32 nella directory corrente. Cd dentro:

cd coreutils-8.32/

Scarica la patch Advanced Copy utilizzando il seguente comando:

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch

Infine, applica la patch eseguendo i seguenti comandi uno per uno:

patch -p1 -i advcpmv-0.8-8.32.patch
./configure
make

Ora due nuovi file binari con patch, vale a dire cp e mv, verranno creati nella cartella coreutils-8.32/src. Basta copiarli nel tuo ` PERCORSO come di seguito:

sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv

Questo è tutto. I comandi cp e mv ora hanno la funzionalità di barra di avanzamento.

Ogni volta che desideri una barra di avanzamento durante la copia o lo spostamento di file e directory, aggiungi semplicemente il flag -g come di seguito:

cp -g archlinux.iso mydownload/

Oppure usa il flag --progress-bar:

cp --progress-bar archlinux.iso mydownload/

Esempio di output:

Copying at  25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso                                                          568.1 MiB / 646.0 MiB
[=========================================================================>                  ] 87.9 %

Aggiungi la barra di avanzamento ai comandi cp e mv in Linux

Alla fine del processo di copia, vedrai quanti file sono stati copiati, quanto tempo è stato necessario per copiare i file e la velocità di trasferimento dati al secondo. Bello, vero?

1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).

Per copiare ricorsivamente una directory e le sue sottodirectory, aggiungi semplicemente il flag -R:

cp -gR directory1/ directory2/

Allo stesso modo, per spostare i file utilizzando il comando mv, esegui:

mv -g archlinux.iso mydownload/

Oppure utilizza il flag --progress-bar:

mv --progress-bar archlinux.iso mydownload/

Per spostare le directory con il comando mv, usa:

mv -g directory1/ directory2/

Puoi anche creare alias per salvare alcune battute di tasti. Per fare ciò, modifica il file ~/.bashrc:

nano ~/.bashrc

Aggiungi le seguenti righe alla fine:

alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'

Premi Ctrl+o e Ctl+x per salvare e chiudere il file.

Ora esegui il comando seguente per rendere effettive le modifiche:

source ~/.bashrc

D'ora in poi, puoi semplicemente usare i comandi cp o mv senza -g (o --progress-bar ) bandiera.

Si tenga presente che i programmi originali non verranno sovrascritti. Puoi comunque chiamarli in qualsiasi momento tramite /usr/bin/cp o /usr/bin/mv.

Aggiungere la funzionalità della barra di avanzamento ai comandi cp e mv è una buona idea se copi o sposti spesso molti file e directory di grandi dimensioni. Ora puoi vedere cosa sta succedendo esattamente durante la copia e lo spostamento dei file, invece di fissare lo schermo.

Nota:

L'autore originale ha inviato la patch al team che mantiene GNU CoreUtils. Non uniranno questa patch perché mv e cp hanno funzionalità complete.

Risorse:

  • Repository GitHub di copia avanzata
  • Copia avanzata su archivio Internet

Lettura correlata:

  • gcp: un'utilità avanzata di copiatura di file per Linux
  • Come monitorare l'avanzamento dei dati attraverso una pipe utilizzando il comando "pv"

Articoli correlati