Questo post riguarda il comando cp di Linux.
La copia di file è una delle attività più comuni durante la gestione di file su qualsiasi sistema operativo. È anche molto comune utilizzare il collegamento sul desktop CTRL + c per copiare e CTRL + v per incollare. Tuttavia, nel terminale Linux, è anche un'operazione abbastanza semplice da eseguire e per questo utilizziamo il comando cp.
Comando Linux cp
Il comando cp copia solo uno o più file o cartelle da una posizione all'altra. Tuttavia, come qualsiasi comando Linux, il suo comportamento iniziale può essere modificato grazie all'uso di opzioni.
Allo stesso modo, il comando cp viene installato e pronto in tutte le distribuzioni Linux poiché fa parte delle utilità GNU. Quindi apri un emulatore di terminale e inizia a lavorare.
Comando Cp:sintassi di base e opzioni
Il comando cp è abbastanza semplice da usare perché anche la sua funzione è semplice. Come tutti i comandi della famiglia UNIX, ha una sintassi di base per l'uso.
Nel caso del comando cp, la sintassi di base è la seguente:
cp [option]... source... directory
Dove sorgente si riferisce al file o alla cartella che verrà copiato in una destinazione denominata directory.
Le opzioni e alcune informazioni di base sul comando possono essere visualizzate utilizzando il seguente comando:
:~$ cp --help
Lì vedrai che ci sono diverse opzioni. I più importanti sono i seguenti:
Opzione | Descrizione secondo le utility GNU |
-a | Preserva il più possibile la struttura e gli attributi dei file originali nella copia |
-d | Copia i collegamenti simbolici come collegamenti simbolici anziché copiare i file a cui puntano e conserva i collegamenti reali tra i file di origine nelle copie. |
-f o –force | Questa opzione forza la copia anche se la cartella di destinazione non è disponibile per la scrittura. |
-i o –interactive | Visualizza un messaggio ogni volta che un file deve essere sovrascritto. |
-l | Crea collegamenti reali anziché copie di non directory. |
-R o -r o –recursive | Copia le directory in modo ricorsivo. Per impostazione predefinita, non seguire i collegamenti simbolici nel sorgente. |
-s o –symbolic-link | In questo caso, il comando creerà collegamenti simbolici di tutti i file che non sono cartelle. Questo sostituisce una copia. |
-u o –update | Questa opzione non copia i file con data e ora di modifica uguali o più recenti nella cartella di destinazione. È un aggiornamento di una copia. |
-v o –verbose | Stampa il nome di ogni file prima di copiarlo. |
Ora, con alcuni esempi, dimostreremo l'uso comune del comando cp su un sistema Linux.
Utilizzo del comando cp
Copia uno o più file in una cartella
Cominciamo con le basi. Per copiare un file in una determinata cartella, il comando da eseguire è il seguente:
:~$ cp [file] [destination]
Ad esempio:
:~$ cp file.txt /home/user/Documents/
Il comando precedente copia un file chiamato file.txt che si trova nella stessa posizione del prompt nella cartella Documenti.
Puoi anche copiare un file che si trova in una posizione diversa da quella del prompt, utilizzando un percorso assoluto.
:~$ cp /home/user/Pictures/image.jpg /home/user/Documents
Quindi, se vuoi copiare più file contemporaneamente, separali semplicemente con uno spazio vuoto.
:~$ cp file1.txt file2.txt /home/user/Downloads
Puoi ancora farlo con i percorsi assoluti.
:~$ cp /home/user/file1.txt /home/user/Pictures/file2.jpg /home/user/Downloads
Questa è la velocità con cui puoi copiare diversi file.
Copia tutti i file da una directory in una cartella
È anche possibile copiare tutti i file da una cartella all'altra. A tale scopo, utilizzare l'operatore asterisco (*). Ad esempio:
:~$ cp * [destination]
Oppure
:~$ cp * /home/users/Documents/folder/
Ma se vuoi copiare tutti i file che hanno la stessa estensione, puoi farlo nel modo seguente:
:~$ cp *.txt /home/users/Documents/folder/
Cioè, tutti i file .txt vengono copiati nella cartella.
Copiare le directory con il comando cp
Finora ti abbiamo insegnato come copiare file, ma se volessi copiare una cartella? Bene, provoca un errore.
Supponiamo di voler copiare una cartella denominata "example" in /home/angelo/Documents, ciò causerebbe un errore di directory di omissione di cp
simile a questo:
Per copiare le cartelle con il comando cp, aggiungi l'opzione -r. Ad esempio:
:~$ cp -r example/ /home/angelo/Documents/
Questo copierà l'intera cartella nella cartella di destinazione.
Esegui il backup dei file da copiare
Questa è un'opzione molto utile. Quando si copiano i file è normale che vengano modificati nel tempo, ma è sempre possibile conservare una copia dell'originale.
Per creare il backup basta usare il seguente comando:
:~$ cp -ab [file] [destination]
Naturalmente, puoi specificare il file e la cartella che desideri. Ad esempio:
:~$ cp -ab file2.txt /home/angelo/Documents/example/
In questo caso, utilizziamo due opzioni contemporaneamente. Il primo è -a. tratta esplicitamente il file per quello che è, un file. E il secondo che è -b è quello di eseguire il backup.
Quello che fa il comando è creare un backup e aggiungere un ~ alla fine se eseguiamo la copia una seconda volta. Questo sarà il file originale della copia.
:~$ ll /home/angelo/Documents/example
Richiedi conferma prima di sovrascrivere un file
Per evitare possibili errori nella scrittura dei file, puoi usare l'opzione -i.
Con questa opzione, ti verrà chiesto di confermare prima di sovrascrivere i file per una copia. Per fare ciò, aggiungi l'opzione -i al comando:
:~$ cp -i file2.txt /home/angelo/Documents/example/
Ricorda, l'avviso verrà visualizzato solo quando verrà sovrascritto. Se copi molti file ma nessuno ha lo stesso nome di un altro nella destinazione, non verrà mostrato nulla.
Evita di sovrascrivere i file con il comando cp
Il comando cp ha un'opzione che impedisce la sovrascrittura dei file nella cartella di destinazione durante la copia.
Per fare ciò, aggiungi semplicemente l'opzione -n al comando cp:
:~$ cp -n file.txt [destination]
Questa opzione è utile se sai già che ci sono file che hanno lo stesso nome e vuoi evitare di sovrascriverli. D'altra parte, è anche utile se non hai idea se esistono file simili.
Esegui copie mantenendo gli attributi dei file
Sui sistemi basati su Unix, i file hanno attributi specifici. Quindi, se un utente diverso da quello che lo ha creato lo copia o lo sposta, c'è il rischio di modificare i valori di questi attributi. Alcuni di essi riguardano la data di modifica e i permessi dei file.
Per evitare ciò, aggiungi l'opzione -p al comando cp.
:~$ cp -p [file] [destination]
È così semplice preservare gli attributi durante la copia.
Aggiornamento di un backup con il comando cp
È possibile utilizzare il comando cp per eseguire il backup dei nostri file in un'altra posizione come una memoria esterna. Supponiamo di voler eseguire il backup di una cartella con la musica in un'altra posizione. Per fare ciò dovresti usare il seguente comando:
:~$ cp -r [music_folder] [destination]
Ma, a quanto pare, stai aggiungendo nuovi file a quella cartella e vuoi eseguirne di nuovo il backup. Puoi impedire al comando cp di copiare nuovamente i file di cui hai già eseguito il backup e copiare semplicemente quelli che non sono nella cartella di destinazione.
Suona bene, vero? Bene, per farlo utilizziamo l'opzione -u o –update.
:~$ cp -ru [music_folder] [destination]
In breve, il comando copierà la cartella, verificherà quali file dalla cartella di origine si trovano nella destinazione. E infine, copierà solo quelli che non lo sono.
Per vedere l'intero processo, puoi anche aggiungere l'opzione -v.
:~$ cp -ruv [music_folder] [destination]
Quindi, puoi aggiornare un backup con un semplice comando.
Pensieri finali
Il comando cp è un comando facile da usare ma hai visto che puoi fare molte cose interessanti con esso. Fa parte delle utilità GNU che lo rendono disponibile per tutte le distribuzioni Linux.
D'altra parte, in questo post, hai imparato una parte di cosa si può fare con il comando. Questo è molto utile negli ambienti server, ma anche per approfondire il funzionamento del sistema operativo.