Comando Rsync per copiare e sincronizzare file e cartelle su Linux
In questo tutorial andremo a mostrare gli utilizzi più comuni del comando rsync su Linux.
Consideriamo di utilizzare una distribuzione linux CentOS 7 (per l’installazione consiglio di questo articolo) e installiamo il comando rsync:
yum install rsync
la sintassi del comando è
rsync opzioni sorgente destinazione
Per la copia di un file e/o di un archivio su una cartella utilizziamo il seguente comando
rsync -avh test1.txt test1.tar.gz test1/
sending incremental file list
test1.tar.gz
test1.txtsent 243 bytes received 50 bytes 586.00 bytes/sec
total size is 112 speedup is 0.38
con la stessa linea di comando rsync è sincronizza due cartelle
rsync -avh test1/ test2/
sending incremental file list
./
test1.tar.gz
test1.txtsent 260 bytes received 53 bytes 626.00 bytes/sec
total size is 112 speedup is 0.36
You have new mail in /var/spool/mail/root
Nal caso in cui la copia deve essere fatta da un server locale verso un server remoto e viceversa (deve essere installato rsync su entrambi i lati)
rsync -avh test1/ root@10.1.1.1:/root/
rsync -avh root@10.1.1.1:/root/test1/ /root/test1/
L’utilizzo di rsync è semplice ed intuitivo, è utilizzato nella maggior parte dei casi come utility di backup sia su macchina locale che remota.
Per problemi di sicurezza alle volte vincolati dai firewall, abbiamo a disposizione determinati protocolli per il trasferimento dei dati, tipo tramite SSH. Rsync è molto versatile, per esempio con il comando
rsync -avhe ssh --progress /root/test1 root@10.1.1.1:/root/
quindi con l’opzione -e possiamo definire il tipo di protocollo di trasmissione, in questo caso ssh ed inoltre inserendo –progress è possibile ottenere una reportistica dettagliata dei dati trasferiti.
Altra funzionalità interessante, è la possibilità nel trasferimento di poter escludere/includere determinati file, in questo caso utilizzando le opzioni –include ‘qualcosa.qualcosa’ –exclude ‘qualcosa.qualcosa’, ad esempio:
rsync -avze ssh --include '*.txt' --exclude '*.tar.gz' root@10.1.1.1:/root/test1/* /root/test1/
Il punto di forza del comando rsync è il trasferimento incrementale dei dati, infatti supponiamo il caso in cui, il server remoto a cui stiamo trasferendo i file sia irraggiungibile, quando il collegamento verrà ripristinato, rilanciando nuovamente il comando, l’rsync riprenderà la propria attività da dove è stato interrotto.