Introduzione
Rsync è un'utilità da riga di comando rapida e versatile che sincronizza file e cartelle tra due posizioni su una shell remota o da/a un demone Rsync remoto. Fornisce un rapido trasferimento incrementale dei file trasferendo solo le differenze tra l'origine e la destinazione.
Rsync può essere utilizzato per il mirroring dei dati, i backup incrementali, la copia di file tra i sistemi e come un sostituto per i comandi scp
, sftp
e cp
per l'uso quotidiano.
In questo tutorial, ti mostreremo come utilizzare rsync
attraverso esempi pratici e spiegazioni dettagliate delle opzioni rsync
più comuni.
Installare Rsync
L'utilità rsync
è preinstallata sulla maggior parte delle distribuzioni Linux e macOS. Puoi verificare se è installato sul tuo sistema digitando:
rsync --version
rsync version 3.1.2 protocol version 31
Se non hai rsync
installato sul tuo sistema, puoi installarlo facilmente usando il gestore pacchetti della tua distribuzione.
Installare Rsync su Ubuntu e Debian
sudo apt install rsync
Installa Rsync su CentOS e Fedora
sudo yum install rsync
Sintassi del comando Rsync
Prima di andare su come utilizzare il comando rsync
, iniziamo esaminando la sintassi di base.
Le espressioni rsync
di utilità assumono la forma seguente:
Local to Local: rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
OPTION
- Le opzioni di rsync.
SRC
- Directory di origine.DEST
- Directory di destinazione.USER
- Nome utente remoto.HOST
- Hostname remoto o indirizzo IP.
rsync
fornisce una serie di opzioni che controllano ogni aspetto del suo comportamento. Le opzioni più utilizzate sono:
-a
,--archive
, Modalità archivio, equivalente a-rlptgoD
. Questa opzione dice al comandorsync
di sincronizzare ricorsivamente le directory, trasferire dispositivi speciali e bloccare, conservare collegamenti simbolici, tempi di modifica, gruppo, proprietà e permessi.-z
,--compress
. Questa opzione forzeràrsync
a comprimere i dati quando vengono inviati al computer di destinazione.-P
, equivalente a--partial --progress
. Quando viene utilizzata questa opzione,rsync
mostrerà una barra di avanzamento durante il trasferimento e per mantenere i file parzialmente trasferiti. È utile quando si trasferiscono file di grandi dimensioni su connessioni di rete lente o instabili.--delete
. Quando si utilizza questa opzionersync
eliminerà file estranei dalla posizione di destinazione. È utile per il mirroring.-q
,--quiet
. Utilizzare questa opzione se si desidera eliminare i messaggi non di errore.-e
. Questa opzione ti consente di scegliere una shell remota diversa. Per impostazione predefinita,rsync
è configurato per utilizzare ssh.
Utilizzo di base di Rsync
Per copiare un singolo file da uno a un altro percorso locale è necessario eseguire il comando seguente:
rsync -a /opt/filename.zip /tmp/
L'utente che esegue il comando deve disporre delle autorizzazioni di lettura sulla posizione di destinazione e delle autorizzazioni di scrittura sulla destinazione.
Se si omette il nome file dalla posizione di destinazione, il file viene copiato con il nome corrente. Se si desidera salvare il file con un nome diverso, specificare il nuovo nome nella parte di destinazione:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Nell'esempio seguente stiamo creando un backup locale dei file del nostro sito Web:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Se la directory di destinazione non esiste verrà creata.
Vale la pena ricordare che rsync
offre un trattamento diverso alle directory di origine con una barra finale /
. Se aggiungi una barra finale nella directory di origine, copierà solo il contenuto della directory nella directory di destinazione. Quando si omette la barra finale rsync
, la directory di origine verrà copiata all'interno della directory di destinazione.
Utilizzare Rsync per sincronizzare i dati da e verso una macchina remota
Quando si utilizza rsync
per il trasferimento remoto, deve essere installato sia sul computer di origine che su quello di destinazione. Le nuove versioni di rsync
sono configurate per utilizzare SSH come shell remota predefinita.
Nel seguente esempio, stiamo trasferendo una directory da un computer locale a un computer remoto:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Se non hai impostato un accesso SSH senza password al computer remoto, ti verrà chiesto di inserire la password dell'utente.
Se si desidera trasferire i dati da un server remoto a un computer locale, è necessario utilizzare la posizione remota come sorgente:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Se SSH sull'host remoto è in ascolto su una porta diversa dalla 22 predefinita, è possibile specificare la porta utilizzando l'opzione -e
:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Quando si trasferiscono grandi quantità di dati, si consiglia di eseguire il comando rsync
all'interno di una schermata (screen) o utilizzare l'opzione -P
:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Escludere file e directory
Quando si escludono file o directory, è necessario utilizzare i percorsi relativi alla posizione di origine.
Esistono due opzioni per escludere file e directory. La prima opzione è utilizzare l'argomento --exclude
e specificare i file e le directory che si desidera escludere dalla riga di comando.
Nel seguente esempio, escludiamo le directory node_modules
e tmp
che si trovano all'interno di src_directory
:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
La seconda opzione è usare l'argomento --exclude-from
e specificare i file e le directory che si desidera escludere in un file.
nano exclude-file.txt
node_modules
tmp
Quindi:
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
Conclusione
In questo tutorial, hai imparato come usare Rsync per copiare e sincronizzare file e directory. C'è molto altro da sapere su Rsync nella pagina del Manuale dell'utente di Rsync.