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 mv
comandi 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"