La copia di file e directory è una delle attività più comuni che esegui 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 utilizzare il cp
comando per copiare file e rsync
per copiare le directory.
Per poter copiare file e directory, devi avere almeno i permessi di lettura sul file di origine e di scrittura sulla directory di destinazione.
Copiare file con cp
Comando #
Sui sistemi operativi Linux e Unix, il cp
comando 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, eseguiresti il seguente comando:
cp file.txt file_backup.txt
Se il file di destinazione esiste, verrà sovrascritto. Per ricevere una richiesta di conferma prima di sovrascrivere i file, utilizzare -i
opzione.
cp -i file.txt file_backup.txt
Per impostazione predefinita, quando si utilizza il cp
comando per copiare un file, il nuovo file sarà di proprietà dell'utente che esegue il comando. Usa il -p
opzione per preservare la modalità del 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 si sta facendo:
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 della directory. Quando la directory di destinazione viene omessa, il file viene copiato nella directory corrente.
Nell'esempio seguente, stiamo copiando il file file.txt
al /backup
directory:
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 vuoi copiare il file con un nome diverso, devi specificare il nome del file desiderato:
cp file.txt /backup/new_file.txt
Il comando precedente copierà il file nella directory specificata come new_file.txt
.
Copia più file #
Per copiare più file e directory contemporaneamente, specifica i nomi dei file e delle directory di origine seguiti dalla 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
Il comando consente anche di utilizzare la corrispondenza dei modelli. Ad esempio, per copiare tutti i .png
file dalla directory corrente al /backup
directory, useresti:
cp *.png /backup
Copiare directory con cp
Comando #
Per copiare una directory, inclusi tutti i suoi file e sottodirectory, usa il -R
o -r
opzione. Nell'esempio seguente, stiamo copiando la directory Pictures
a Pictures_backup
:
cp -R Pictures Pictures_backup
Il comando precedente creerà la directory di destinazione e copierà ricorsivamente tutti i file e le sottodirectory dalla directory di origine 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, usa il -T
opzione:
cp -RT Pictures Pictures_backup
Le opzioni utilizzate durante la copia dei file possono essere utilizzate anche durante la copia delle directory. La differenza principale è che quando si copiano le directory, è necessario utilizzare il -R
opzione.
Copiare file e directory con rsync
Comando #
rsync
è un'utilità da riga di comando veloce e versatile che sincronizza file e directory tra due posizioni. Può essere utilizzato per copiare file in posizioni locali e remote.
rsync
include molte opzioni che controllano ogni aspetto del suo comportamento
L'opzione più utile è -a
che copiano ricorsivamente directory, trasferiscono dispositivi speciali e bloccano e preservano collegamenti simbolici, tempi di modifica, gruppo, proprietà e autorizzazioni.
Per copiare un singolo file da una posizione a un'altra, eseguire il comando seguente:
rsync -a file.txt file_backup.txt
Se il file di destinazione esiste, rsync
lo sovrascriverà.
Lo stesso comando può essere utilizzato 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 /
diversamente. Se aggiungi una barra finale alla 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 includere la barra finale /
sia sulla destinazione che sulla sorgente.
Per ulteriori informazioni su rsync
controlla i seguenti articoli:
- Come utilizzare Rsync per il trasferimento e la sincronizzazione di dati locali e remoti
- Come escludere file e directory con Rsync
Conclusione #
Ti abbiamo mostrato come copiare file e directory in sistemi basati su Linux e Unix, usando il cp
e rsync
utilità.
Se hai domande, lascia un commento qui sotto.