Come copiare una directory e il suo contenuto in Linux

Usa il comando 'cp' per copiare e incollare intere directory da un posto all'altro

Indipendentemente dal sistema operativo in esecuzione, copiare un file o una cartella da una posizione a un'altra è l'attività più elementare che esegui quotidianamente. In una giornata impegnativa al lavoro, durante l'assegnazione di un progetto a scuola o durante lo sviluppo in corso di un progetto, è inevitabile copiare i file dalla posizione A alla posizione B.

La copia di file o cartelle viene solitamente eseguita utilizzando la GUI. Linux si prende cura della tua abitudine di lavorare sul terminale fornendo un'utilità della riga di comando che ti consente di copiare file o cartelle da una posizione all'altra. Usando il cp comando con una varietà di opzioni ti dà la libertà di copiare file e cartelle in più modi.

Lascia che ti guidi attraverso questo articolo in cui imparerai a conoscere il cp comando e i modi per copiare le directory insieme al loro contenuto.

Opzioni disponibili con cp comando

Queste sono le opzioni più comuni utilizzate con il cp comando nel contesto della copia di una directory e di tutto il suo contenuto.

OpzioniDescrizione
-vmodalità dettagliata (mostra i progressi)
-r/Rcopiare le directory in modo ricorsivo
-nnon sovrascrivere un file o una cartella esistente
-ioprompt prima di sovrascrivere

Copia una directory da una posizione all'altra

Iniziamo con l'uso più elementare di cp comando. Useremo questo comando con l'opzione -R.

Usando il -R L'opzione garantisce che verranno copiati anche le sottocartelle e i file all'interno della directory che stai copiando.

Sintassi:

cp -r [posizione_origine] [posizione_destinazione]

Esempio:

Ho due directory all'interno della mia directory di lavoro corrente chiamate "progetto" e "area di lavoro".

In questo esempio, userò il cp -r comando per copiare la directory "progetto" insieme a tutto il suo contenuto in una nuova posizione, ad esempio "/home/gaurav/workspace". Ciò significa semplicemente che sto copiando la directory denominata "progetto" in una directory denominata "spazio di lavoro".

Questi sono i contenuti della directory "progetto". Usando il ls comando per visualizzarne il contenuto.

gaurav@ubuntu:~/project$ ls -al total 288 drwxr-xr-x 6 gaurav gaurav 4096 17 settembre 18:26 . drwxr-xr-x 88 gaurav gaurav 266240 17 set 18:24 .. drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem1, drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem2 drwxr-xr -x 2 gaurav gaurav 4096 17 set 18:25 dem3 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem4 -rw-r--r-- 1 gaurav gaurav 24 set 17 18:26 temp.c gaurav@ ubuntu:~/progetto$

Ora, usando il cp -r comando possiamo copiare la directory "progetto" in qualsiasi posizione desiderata.

gaurav@ubuntu:~$ cp -r /home/gaurav/project /home/gaurav/workspace gaurav@ubuntu:~$

Produzione:

gaurav@ubuntu:~/workspace$ ls -al total 408 drwxrwxr-x 4 gaurav gaurav 4096 17 settembre 18:27 . drwxr-xr-x 88 gaurav gaurav 266240 17 set 18:24 .. drwxrwxr-x 3 gaurav gaurav 4096 22 mar 2018 .metadata drwxr-xr-x 6 gaurav gaurav 4096 17 set 18:27 progetto -rw-r--r -- 1 gaurav gaurav 1535 16 settembre 17:13 source.c gaurav@ubuntu:~/workspace$ 

Nell'output sopra, possiamo vedere che la directory "progetto" viene copiata dalla posizione originale a questa nuova posizione "/home/gaurav/workspace". Ora apriamo la directory "progetto" e controlliamo se anche tutti i contenuti al suo interno vengono copiati.

gaurav@ubuntu:~$ cd ./workspace/project gaurav@ubuntu:~/workspace/project$

Nota: ho usato ./ qui invece di inserire il percorso completo. Significa semplicemente che è il percorso della mia home directory e l'area di lavoro si trova nella mia home o nella directory di lavoro corrente. Per ulteriori chiarimenti su questo, puoi dare un'occhiata a questo articolo.

Produzione:

gaurav@ubuntu:~/workspace/project$ ls -al total 28 drwxr-xr-x 6 gaurav gaurav 4096 17 settembre 18:27 . drwxrwxr-x 4 gaurav gaurav 4096 17 set 18:27 .. drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem1, drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem2 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem3 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem4 -rw-r--r-- 1 gaurav gaurav 24 set 17 18:27 temp.c gaurav@ubuntu: ~/area di lavoro/progetto$ 

Da questo output, possiamo concludere che anche tutti i contenuti della directory "progetto" vengono spostati nella nuova posizione.

Copia di più directory da una posizione all'altra

Per copiare più directory, cp comando può essere utilizzato allo stesso modo di cui sopra. L'unico cambiamento qui sarà che dovrai inserire i percorsi multipli di origine delle directory multiple da copiare.

Sintassi:

cp -r [percorso_origine_1] [percorso_origine_n] [percorso_destinazione]

Verifichiamo questo comando con un esempio.

Esempio:

gaurav@ubuntu:~/workspace$ cp -r ./snap ./project /home/gaurav/tomcat

Qui ho copiato due directory "snap" e "project" dalla mia directory di lavoro corrente in una nuova posizione "/home/gaurav/tomcat".

Ora controlliamo se le directory vengono copiate con il loro contenuto nella nuova posizione.

gaurav@ubuntu:~/tomcat$ ls -al total 9316 drwxrwxr-x 5 gaurav gaurav 4096 19 settembre 12:16 . drwxr-xr-x 88 gaurav gaurav 266240 19 set 12:15 .. drwxr-xr-x 6 gaurav gaurav 4096 19 set 12:16 progetto drwxr-xr-x 7 gaurav gaurav 4096 19 set 12:16 snap

Verifica se viene copiato anche il contenuto di queste directory.

gaurav@ubuntu:~/tomcat/snap$ ls couchdb eclipse htop pycharm-community vim-editor gaurav@ubuntu:~/tomcat/snap$ 
gaurav@ubuntu:~/tomcat/project$ ls dem1, dem2 dem3 dem4 temp.c gaurav@ubuntu:~/tomcat/project$

Usando cp comando con modalità dettagliata

Usando il cp comando con l'opzione -v abilita la modalità dettagliata. Questa funzione visualizza i file sul terminale che vengono copiati. Il nome del file o della cartella che viene copiato viene visualizzato sul tuo terminale.

Sintassi:

cp -vr [directory_origine] [percorso_ubicazione_destinazione]

Esempio:

gaurav@ubuntu:~$ cp -vr ./workspace/apache ./space

In questo esempio, la directory "apache" viene copiata in una nuova cartella "spazio". ho usato il -v opzione con -R, in modo che venga copiato anche tutto il contenuto della directory di apache.

Produzione:

'./workspace/apache' -> './space/apache' './workspace/apache/apache-tomcat-8.0.52.tar.gz' -> './space/apache/apache-tomcat-8.0. 52.tar.gz' gaurav@ubuntu:~$

L'output mostra la directory che viene copiata. La stessa procedura può essere eseguita in caso di copia di più file.

Evita di sovrascrivere quando usi cp comando

A volte durante l'utilizzo del cp comando per copiare più file o cartelle, potresti finire per sovrascrivere i file che sono già stati copiati nella nuova posizione. Per evitare ciò si consiglia di utilizzare il -io opzione con il cp comando. Questo ti chiederà prima di sovrascrivere qualsiasi file o cartella.

Sintassi:

cp -ri [percorso_directory_origine] [percorso_ubicazione_destinazione]

Nota: Qui, nella sintassi che ho usato -R anche l'opzione. Questo copierà anche il contenuto delle directory. Verificherà inoltre se qualcuna di queste sottocartelle e file all'interno della directory viene sovrascritta.

Esempio:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat cp: sovrascrivi './tomcat/snap/pycharm-community/current'?

Qui, ho provato a copiare una directory denominata "snap" in una nuova posizione. Ma il nome della directory "snap" esiste già nella nuova posizione. Quindi, mi verrà richiesto dal terminale prima di sovrascrivere la directory snap esistente.

Puoi digitare '' o 'No' come risposta a questa richiesta.

Nel caso, se non si utilizza il -io opzione, la directory esistente verrà sovrascritta dalla nuova directory.

Salta la sovrascrittura di file e directory con cp comando

Possiamo usare il -n opzione per istruire direttamente il terminale a non sovrascrivere mai e semplicemente saltare file e directory simili durante l'utilizzo del cp comando.

Sintassi:

cp -nr [percorso_directory_origine] [percorso_ubicazione_destinazione]

Usando questo comando puoi essere sicuro che i tuoi file e cartelle non verranno sovrascritti.

Esempio:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat gaurav@ubuntu:~$

Qui, la directory "snap" esiste già nella posizione di destinazione. Quindi, usando -n l'opzione assicurerà di non sovrascrivere questa directory.

a differenza di -io opzione, qui non ti verrà chiesto di sovrascrivere.

Conclusione

Usando il cp comando per copiare le directory e il loro contenuto in Linux è un processo semplice. Per saperne di più sul cp comando con altre opzioni disponibili, puoi controllare la pagina del manuale digitando uomo cp nel tuo terminale Linux.