Articles

Come copiare file e directory in Linux

Copiare file e directory è una delle attività più comuni che eseguirai quando lavori sulla riga di comando. Ci sono diversi comandi per copiare i file in Linux, con cp e rsync essendo gli strumenti più utilizzati.

È pratica comune usare il comando cp per copiare i file e rsync per copiare le directory.

Per poter copiare file e directory, è necessario disporre almeno delle autorizzazioni di lettura sul file sorgente e di quelle di scrittura sulla directory di destinazione.

Copia di file con il comando cp #

Nei sistemi operativi Linux e Unix, il comandocpviene utilizzato per copiare file e directory.

Il caso d’uso più semplice è copiare un file nella directory di lavoro corrente. Ad esempio, per copiare un file denominato file.txt in un file denominato file_backup.txt nella directory corrente, eseguire il seguente comando:

cp file.txt file_backup.txt

Se il file di destinazione esiste, verrà sovrascritto. Per ottenere una richiesta di conferma prima di sovrascrivere i file, utilizzare l’opzione-i.

cp -i file.txt file_backup.txt

Per impostazione predefinita, quando si utilizza il comandocp per copiare un file, il nuovo file sarà di proprietà dell’utente che esegue il comando. Utilizzare l’opzione-p per preservare la modalità file, la proprietà e i timestamp:

cp -p file.txt file_backup.txt

Un’altra opzione che può essere utile è-v. Quando si utilizza questa opzione, il comando stampa ciò che viene fatto:

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

Copia un file in una directory #

Per copiare un file in una directory, specificare il percorso assoluto o relativo alla directory. Quando la directory di destinazione viene omessa, il file viene copiato nella directory corrente.

Nell’esempio seguente, stiamo copiando il file file.txt nella directory /backup :

cp file.txt /backup

Quando si specifica solo il nome della directory come destinazione, il file copiato avrà lo stesso nome del file originale.

Se si desidera copiare il file con un nome diverso, è necessario specificare il nome del file desiderato:

cp file.txt /backup/new_file.txt

Il comando sopra copierà il file nella directory specificata comenew_file.txt.

Copia più file #

Per copiare più file e directory contemporaneamente, specificare i nomi dei file e delle directory di origine seguiti con la directory di destinazione come ultimo argomento:

cp file.txt dir file1.txt file2.txt dir1

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

Il cp comando permette anche di utilizzare pattern matching. Per esempio, per copiare tutti i .png file dalla directory corrente per il /backup directory, utilizzare:

cp *.png /backup

Copia di Directory con il Comando cp #

copiare una directory, compresi tutti i suoi file e le sottodirectory, utilizzare il -R o -r opzione. Nell’esempio seguente, stiamo copiando la directoryPictures inPictures_backup:

cp -R Pictures Pictures_backup

Il comando sopra creerà la 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 il suo contenuto vengono copiati nella directory di destinazione. Per copiare solo i file e le sottodirectory ma non la directory di destinazione, utilizzare l’opzione-T :

cp -RT Pictures Pictures_backup

Le opzioni utilizzate per copiare i file possono essere utilizzate anche per copiare le directory. La differenza principale è che quando si copiano le directory, è necessario utilizzare l’opzione -R.

Copiare file e directory con il comando rsync #

rsync è un’utilità a riga di comando veloce e versatile che sincronizza file e directory tra due posizioni. Può essere utilizzato per copiare i file in posizioni locali e remote.

rsyncinclude molte opzioni che controllano ogni aspetto del suo comportamento

L’opzione più utile è -a che copia ricorsivamente directory, trasferisce dispositivi speciali e blocca e conserva collegamenti simbolici, tempi di modifica, gruppo, proprietà e autorizzazioni.

Per copiare un singolo file da una posizione all’altra, eseguire il seguente comando:

rsync -a file.txt file_backup.txt

Se il file di destinazione esiste, rsync lo sovrascriverà.

Lo stesso comando può essere usato per copiare una directory:

rsync -a /var/www/public_html/ /var/www/public_html_backup/

rsyncminaccia le directory di origine che terminano con una barra finale / in modo diverso. Se si aggiunge una barra finale nella directory di origine, il comando copierà solo il contenuto della directory di origine nella directory di destinazione. Quando la barra finale viene omessa, rsync copierà la directory di origine all’interno della directory di destinazione. L’opzione più sicura è sempre quella di includere la barra finale / sia sulla destinazione che sull’origine.

Per saperne di più su rsync controllare i seguenti articoli:

  • Come Utilizzare Rsync per il Locale e Remoto, il Trasferimento dei Dati e la Sincronizzazione
  • Come per Escludere i File e le Directory con Rsync

Conclusione #

vi Abbiamo mostrato come la copia di file e directory in Linux e i sistemi basati su Unix, utilizzando il cp e rsync utility.