Introduzione

Quando lavori su sistemi Linux e Unix, la copia di file e directory è una delle attività più comuni che eseguirai quotidianamente.

cp è un'utilità della riga di comando per la copia di file e directory su sistemi Unix e Linux. In questo articolo, spiegheremo come usare il comando cp.

Come utilizzare il comando cp

La sintassi generale per il comando cp è la seguente:

cp [OPTIONS] SOURCE... DESTINATION

Il parametro SOURCE può avere uno o più file o directory come argomenti e DESTINATION può avere un singolo file o una directory come argomento.

  • Quando gli argomenti SOURCE e DESTINATION sono entrambi presenti, il comando cp copia il primo file nel secondo. Se il file non esiste, il comando lo creerà.
  • Quando SOURCE ha più file o directory come argomenti, l' argomento DESTINATION deve essere una directory. In questo caso, i file SOURCE  e le directory vengono spostati nella DESTINATION directory.
  • Quando gli argomenti SOURCE e DESTINATION sono entrambi directory, il comando cp copia la prima directory nella seconda.

Per copiare file e directory è necessario disporre almeno delle autorizzazioni di lettura sul file di origine e delle autorizzazioni di scrittura sulla directory di destinazione. In caso contrario, verrà visualizzato un errore di autorizzazione negata.

Copia dei file con il comando cp

Lo scenario di base dell'utilizzo di  cp è la copia di un file nella directory di lavoro corrente. Ad esempio, per fare una copia file_backup.txt di un file di nome file.txt eseguire il seguente comando:

cp file file_backup

Oppure:

cp file{,_backup}

Per copiare un file in un'altra directory, specificare il percorso assoluto o relativo della directory di destinazione. Quando viene specificato solo il nome della directory come destinazione, il file copiato avrà lo stesso nome del file originale.

Nel seguente esempio stiamo copiando il file file.txt nella directory /backup:

cp file.txt /backup

Se si desidera copiare il file con un nome diverso, è necessario specificare il nome file desiderato. Il comando seguente copia il file nella directory specificata come nuovo_file.txt.

cp file.txt /backup/nuovo_file.txt

Per impostazione predefinita, se il file di destinazione esiste, verrà sovrascritto. L'opzione -n serve per non sovrascrivere un file esistente. Per richiedere conferma, utilizzare l'opzione -i.

cp -i file.txt file_backup.txt

Se vuoi copiare il file solo se è più recente della destinazione usa l'opzione -u:

cp -u file.txt file_backup.txt

Quando si copia un file, il nuovo file sarà di proprietà dell'utente che esegue il comando. Utilizzare l'opzione -p per preservare la modalità file, i permessi e i timestamp :

cp -p file.txt file_backup.txt

Un'altra opzione che può essere utile è -v che dice a cp di stampare un output dettagliato:

cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'

Copia delle directory con il comando cp

Per copiare una directory, inclusi tutti i suoi file e le sue sottodirectory, usa l' opzione -R o -r. Nel seguente esempio stiamo copiando la directory Immagini in Immagini_backup

cp -R Immagini Immagini_backup

Il comando sopra creerà una directory di destinazione e copierà ricorsivamente tutti i file e le sottodirectory dalla sorgente alla directory di destinazione.

Se la directory di destinazione esiste già, la directory di origine stessa e tutto il suo contenuto verrà copiato nella directory di destinazione. Per copiare solo i file e le sottodirectory ma non le directory di destinazione, utilizzare l'opzione -T:

cp -RT Immagini Immagini_backup

Un altro modo per copiare solo il contenuto della directory ma non la directory stessa è utilizzare il carattere jolly ( * ). Lo svantaggio del seguente comando è che non copierà i file e le directory nascosti (quelli che iniziano con un punto .):

cp -RT Immagini/* Immagini_backup/

Tutte le opzioni utilizzate nella sezione precedente durante la copia dei file possono essere utilizzate anche durante la copia di directory. La differenza principale è che quando si copiano le directory è sempre necessario utilizzare l'opzione -R.

Copia più file e directory

Per copiare più file e directory contemporaneamente specificandone i nomi e utilizzare la directory di destinazione come ultimo argomento:

cp file.txt dir file1.txt  dir1

Quando si copiano più file, la destinazione deve essere una directory.

Conclusione

Copiare file e directory con il comando cp è un compito semplice. Per informazioni sul comando cp digitare man cp nel terminale.