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 comandocp
viene 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.
rsync
include 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/
rsync
minaccia 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.
Leave a Reply