![Il malware Joker sul Play Store prende di mira app come Smart TV Remote e altro](/f/fab4d4917d914e8d80d3ab1d0eedc3b1.jpg?width=100&height=100)
Breve: in questa guida facile da seguire, discuteremo alcuni esempi pratici del comando cp. Dopo aver seguito questa guida, gli utenti saranno in grado di copiare facilmente file e directory in Linux utilizzando l'interfaccia della riga di comando.
Come utenti Linux, interagiamo con il file e directory di volta in volta. Un'operazione comune eseguita dagli utenti è copiare file e directory. Certamente, possiamo utilizzare un file manager grafico per eseguire l'operazione di copia. Tuttavia, la maggior parte degli utenti Linux preferisce utilizzare il file cp comando grazie alla sua semplicità e alla sua ricca funzionalità.
In questa guida per principianti, impareremo a conoscere il cp comando. Come suggerisce il nome, il comando cp viene utilizzato per copiare file e directory in un determinato percorso.
In questa guida, capiremo l'uso del comando cp utilizzando esempi pratici che possono essere utilizzati quotidianamente.
Quindi iniziamo.
Sommario
La sintassi del cp comando è identico ad altri comandi di Linux. Ad alto livello, è diviso in due parti: opzioni E argomenti:
$ cp [OPZIONI]$ cp [OPZIONI] ...
Nella sintassi precedente, le parentesi quadre ([])
rappresentano gli argomenti facoltativi mentre le parentesi angolari (<>)
rappresentano gli argomenti obbligatori.
Uno degli usi di base del cp comando consiste nel copiare un file in una directory corrente. La maggior parte delle volte gli utenti eseguono questa operazione per eseguire un backup della configurazione importante.
Ad esempio, spesso creiamo una copia di backup di /etc/ssh/sshd_config prima di aggiornare la configurazione SSH.
Per capire l'utilizzo, creiamo un semplice file:
$ toccare file-1.txt.
Successivamente, crea una copia del file utilizzando il seguente comando:
$ cp file-1.txt file-2.txt.
Nell'esempio precedente, abbiamo utilizzato il comando ls per verificare se l'operazione di copia del file è riuscita o meno. Tuttavia, non ha senso utilizzare un altro comando solo per verificare il risultato dei comandi precedenti.
In tali casi, possiamo abilitare la modalità dettagliata utilizzando il file - v
opzione, che fornisce la diagnostica per ogni file elaborato.
Facciamo una copia del file-1.txt file utilizzando il seguente comando:
$ cp -v file-1.txt file-3.txt.
Nell'output precedente, la freccia rappresenta il file che viene copiato. L'argomento del lato sinistro è il file sorgente mentre l'argomento del lato destro è il file di destinazione.
Finora abbiamo lavorato con un singolo file e solo la directory di lavoro corrente. Tuttavia, nell'ambiente di produzione reale, dobbiamo lavorare con a gran numero di file. Uno dei casi d'uso comuni in tali ambienti è copiare più file in un'unica directory.
Ovviamente, possiamo eseguire il comando cp più volte per ottenerlo, ma non sarà il modo più efficace. Per eseguire efficacemente tale operazione, possiamo utilizzare una sintassi alternativa del comando cp.
Quindi, prima, creare una nuova directory con il nome dir-1:
$ mkdir dir-1.
Ora, copiamo tutti e tre i file nel formato dir-1 directory utilizzando il singolo comando:
$ cp -v file-1.txt file-2.txt file-3.txt dir-1.
L'output sopra mostra che tutti i file sono stati copiati nel file dir-1 directory. Inoltre, è importante notare che, per utilizzare questa sintassi alternativa, la directory deve essere già presente e deve essere l'ultimo argomento del comando.
Per impostazione predefinita, il cp Il comando sostituisce il file di destinazione, il che significa che sovrascriverà il file se esiste nella destinazione con lo stesso nome. Tuttavia, possiamo disabilitare questo comportamento predefinito utilizzando il file -N
opzione.
Per capirlo, proviamo a sovrascrivere il file esistente:
$ cp -n -v file-1.txt file-2.txt.
In questo esempio, abbiamo utilizzato il - v
opzione per illustrare che il file-2.txt il file non è stato sovrascritto.
Nell'esempio precedente abbiamo visto come evitare la sovrascrittura del file di destinazione. Tuttavia, a volte vogliamo sovrascrivere la destinazione del file in modo più sicuro.
In questi casi, possiamo usare il -io
opzione del comando per rendere interattiva l'operazione di copia. Questa opzione mostra il messaggio di avviso e attende la conferma dell'utente prima di sovrascrivere il file.
Per illustrare questo, proviamo a sovrascrivere il file esistente:
$ cp -i file-1.txt file-2.txt cp: sovrascrivere 'file-2.txt'?
Come possiamo vedere, il comando è in attesa di conferma. Proprio come altri comandi Linux, possiamo usare 'si'
continuare o 'N'
per interrompere l'operazione.
Questo comportamento non interattivo predefinito di cp comando non è molto sicuro. È possibile che l'utente sovrascriva per errore una configurazione importante. Quindi alcune delle distribuzioni Linux impongono il comportamento interattivo per impostazione predefinita utilizzando il file comando alias:
$ alias cp='cp -i'
Nell'esempio precedente abbiamo visto come utilizzare la modalità interattiva. Tuttavia, a volte, un utente potrebbe sovrascrivere inavvertitamente il file più recente.
Per evitare tali casi soggetti a errori, possiamo utilizzare il file -u
opzione, che tenta l'operazione di copia solo se l'origine è più recente della destinazione o se il file non è presente nella destinazione.
Innanzitutto, aggiorna il timestamp del file sorgente:
$ touch -t 10101010 file-1.txt. $ ls -l file-1.txt.
Nell'esempio sopra, abbiamo usato il -T
opzione del comando tocco per impostare il timestamp del file su 10 ottobre 2010.
Successivamente, aggiorniamo il timestamp del file di destinazione all'ora corrente:
$ toccare file-2.txt.
Ora, proviamo a eseguire l'operazione di copia utilizzando il file -u
opzione:
$ cp -u -v file-1.txt file-2.txt.
Qui possiamo vedere che l'operazione di copia non è stata tentata perché il file di destinazione è più recente dell'origine.
Infine, scambiamo gli argomenti di origine e destinazione ed eseguiamo l'operazione di copia:
$ cp -u -v file-2.txt file-1.txt.
Nell'output precedente, possiamo osservare che l'operazione di copia ha esito positivo perché il file di origine è più recente della destinazione.
Possiamo istruire il cp comando per eseguire un backup del file di destinazione prima di sovrascriverlo. Per raggiungere questo obiettivo possiamo utilizzare il --backup
opzione, che esegue backup automatici.
$ cp --backup=numerato -v file-1.txt file-2.txt.
In questo esempio, abbiamo utilizzato la policy di backup numerata. Questa politica utilizza numeri incrementali nei nomi dei file di backup.
Per capirlo, eseguiamo lo stesso comando più volte e osserviamo l'output:
$ cp --backup=numerato -v file-1.txt file-2.txt. $ cp --backup=numerato -v file-1.txt file-2.txt. $ cp --backup=numerato -v file-1.txt file-2.txt.
Negli esempi precedenti abbiamo visto come sovrascrivere il file in modo più sicuro. Tuttavia, in alcuni rari casi, è necessario sovrascrivere il file. Tuttavia, non vi è alcuna garanzia che l'operazione abbia successo ogni volta.
Ad esempio, l'operazione di copia avrà esito negativo se il file di destinazione non dispone delle autorizzazioni di scrittura. Illustriamolo con un esempio.
Innanzitutto, modifica i permessi del file di destinazione:
$ chmod 444 file-2.txt. $ ls -l file-2.txt.
Ora proviamo a sovrascrivere il file file-2.txt file:
$ cp file-1.txt file-2.txt.
Nell'output sopra, possiamo vedere che il comando non è riuscito con l'errore di autorizzazione negata.
Per ovviare a questa limitazione, possiamo utilizzare il -F
opzione, che elimina i file di destinazione e tenta l'operazione di copia se il file di destinazione non può essere aperto.
Ora usiamo il -F
opzione per sovrascrivere forzatamente il file:
$ cp -f -v file-1.txt file-2.txt.
Nell'esempio precedente, abbiamo visto come rimuovere il file di destinazione se si verifica un errore durante il suo funzionamento. Tuttavia, a volte il requisito è rimuovere prima il file di destinazione e quindi eseguire l'operazione di copia.
Per soddisfare tale requisito, possiamo utilizzare il --remove-destinazione
opzione.
$ cp --remove-destinazione -v file-1.txt file-2.txt.
Nell'output sopra, possiamo vedere che il comando cp prima rimuove il file di destinazione e quindi esegue l'operazione di copia.
Possiamo creare un hard link invece di creare una nuova copia del file sorgente. Questa opzione gioca un ruolo importante in caso di scarsità di spazio su disco.
Quindi, usiamo il -l
opzione per creare un collegamento fisico:
$ cp -l -v file-1.txt file-4.txt.
Ora, controlliamo i numeri di inode di entrambi i file per verificare gli hard link:
$ ls -i1 file-1.txt file-4.txt.
Nell'output precedente, i numeri nella prima colonna rappresentano i numeri di inode.
In modo simile, possiamo creare un soft link invece di creare una nuova copia utilizzando il file -S
opzione come mostrato di seguito:
$ cp -s -v file-1.txt file-5.txt.
Verifichiamo ora che il collegamento simbolico sia stato creato correttamente:
$ ls -l file-5.txt.
Nell'output precedente, le ultime colonne rappresentano la relazione di collegamento simbolico.
Ci sono vari attributi associati al file, come il tempo di accesso, il tempo di modifica, i permessi, ecc. Per impostazione predefinita, questi attributi non vengono conservati durante la copia del file. Per sovrascrivere questo comportamento predefinito possiamo usare il file -P
opzione.
Per capirlo, per prima cosa aggiorna il timestamp del file file-1.txt:
$ touch -t 10101010 file-1.txt.
Ora, creiamo una copia di questo file conservando tutti i suoi attributi:
$ cp -p -v file-1.txt file-6.txt.
Infine, verifica il timestamp del file file-6.txt file:
$ ls -l file-6.txt.
Finora abbiamo visto come copiare un singolo file. Tuttavia, spesso dobbiamo copiare tutti i file e le sottodirectory della directory specifica.
In tali casi, possiamo utilizzare la modalità ricorsiva utilizzando il -R
O -R
opzione.
Quindi, creiamo una directory e aggiungiamo alcuni file e sottodirectory sotto di essa:
$ mkdir -p dir-1/dir-2. $ toccare dir-1/file-1.txt dir-1/dir-2/file-2.txt.
Successivamente, verifica che la struttura della directory sia stata creata correttamente:
$ albero dir-1.
Ora, copiamo la directory dir-1 in modo ricorsivo usando il seguente comando:
$ cp -r -v dir-1 dir-3.
Infine, verifica che tutti i file e le sottodirectory siano stati copiati correttamente:
$ albero dir-3.
Analogamente ai file, possiamo copiare più directory ricorsive utilizzando un singolo comando. Tuttavia, per ottenere ciò, la directory di destinazione deve essere già presente e deve essere l'ultimo argomento nel comando. Capiamolo con un esempio.
Innanzitutto, crea una directory una nuova directory:
$ mkdir dir-4.
Ora copiamo il file dir-1 E dir-3 directory nel dir-4 directory utilizzando il seguente comando:
$ cp -r -v dir-1 dir-3 dir-4.
In modo simile, possiamo usare il -T
opzione del comando per ottenere lo stesso risultato. Questa opzione ci consente di specificare la directory di destinazione. Quindi possiamo usarlo anche come primo argomento:
$ cp -t dir-4 -r -v dir-1 dir-3.
In questo articolo, abbiamo discusso su come copiare file e directory utilizzando l'estensione comando cp. I principianti possono fare riferimento a questi esempi nella vita quotidiana mentre lavorano con i sistemi Linux.
Potrebbe piacerti anche:
Conosci qualche altro miglior esempio del comando cp in Linux? Fateci sapere le vostre opinioni nei commenti qui sotto.