rsync
è un'utilità da riga di comando veloce e versatile per sincronizzare file e directory tra due posizioni su una shell remota o da/a un demone Rsync remoto. Fornisce un rapido trasferimento di file incrementale trasferendo solo le differenze tra l'origine e la destinazione.
Rsync può essere utilizzato per eseguire il mirroring dei dati, backup incrementali, copiare file tra sistemi e in sostituzione di scp
, sftp
e cp
comandi.
Questo articolo spiega come usare rsync
attraverso esempi pratici e spiegazioni dettagliate dei più comuni rsync
opzioni.
Installazione di Rsync #
Il rsync
l'utilità è preinstallata sulla maggior parte delle distribuzioni Linux e macOS. Se non hai rsync
installato sul tuo sistema, puoi installarlo facilmente utilizzando il gestore di pacchetti della tua distribuzione.
Installa 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 entrare in come usare il rsync
comando, iniziamo esaminando la sintassi di base.
Il rsync
le espressioni 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 sincronizzazione.SRC
- Directory di origine.DEST
- Directory di destinazione.USER
- Nome utente remoto.HOST
- Nome host o indirizzo IP remoto.
rsync
fornisce una serie di opzioni che controllano il comportamento del comando. Le opzioni più utilizzate sono:
-a
,--archive
, modalità archivio, equivalente a-rlptgoD
. Questa opzione dice arsync
per sincronizzare le directory in modo ricorsivo, trasferire dispositivi speciali e bloccare, preservare collegamenti simbolici, tempi di modifica, gruppi, proprietà e autorizzazioni.-z
,--compress
. Questa opzione forzarsync
per comprime i dati man mano che vengono inviati alla macchina di destinazione. Utilizzare questa opzione solo se la connessione alla macchina remota è lenta.-P
, equivalente a--partial --progress
. Quando viene utilizzata questa opzione,rsync
mostra una barra di avanzamento durante il trasferimento e conserva i file parzialmente trasferiti. È utile quando si trasferiscono file di grandi dimensioni su connessioni di rete lente o instabili.--delete
. Quando viene utilizzata questa opzione,rsync
elimina i file estranei dalla posizione di destinazione. È utile per il mirroring.-q
,--quiet
. Utilizza questa opzione se desideri 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 #
Il caso d'uso più elementare di rsync
consiste nel copiare un singolo file da uno a un'altra posizione locale. Ecco un esempio:
rsync -a /opt/filename.zip /tmp/
L'utente che esegue il comando deve disporre delle autorizzazioni di lettura sulla posizione di origine e di scrittura sulla destinazione.
L'omissione del nome del file dalla posizione di destinazione copia il file con il nome corrente. Se vuoi salvare il file con un nome diverso, specifica il nuovo nome sulla parte di destinazione:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Il vero potere di rsync
arriva durante la sincronizzazione delle directory. L'esempio seguente mostra come creare un backup locale dei file del sito Web:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Se la directory di destinazione non esiste, rsync
lo creerà.
Vale la pena ricordare che rsync
fornisce un trattamento diverso alle directory di origine con una barra finale (/
). Se la directory di origine ha una barra finale, il comando copierà solo il contenuto della directory nella directory di destinazione. Quando la barra finale viene omessa, rsync
copia la directory di origine all'interno della directory di destinazione.
Utilizzo di rsync
per sincronizzare i dati da/su una macchina remota #
Quando si utilizza rsync
per trasferire i dati in remoto, deve essere installato sia sulla macchina di origine che su quella di destinazione. Le nuove versioni di rsync
sono configurati per utilizzare SSH come shell remota predefinita.
Nell'esempio seguente, stiamo trasferendo una directory da una macchina locale a una remota:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Se non hai impostato un accesso SSH senza password alla macchina remota, ti verrà chiesto di inserire la password utente. Per trasferire i dati da un computer remoto a un computer locale, utilizza la posizione remota come origine:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Se SSH sull'host remoto è in ascolto su una porta diversa da quella predefinita 22 , specifica la porta utilizzando -e
opzione:
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 rsync
comando all'interno di una sessione di schermo o per utilizzare il -P
opzione:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Escludi file e directory #
Sono disponibili due opzioni per escludere file e directory. La prima opzione è usare --exclude
argomento e specificare i file e le directory che si desidera escludere dalla riga di comando.
Quando si escludono file o directory, è necessario utilizzare i percorsi relativi alla posizione di origine.
Nell'esempio seguente viene mostrato come escludere i node_modules
e tmp
directory:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
La seconda opzione è usare il --exclude-from
opzione e specifica i file e le directory che desideri escludere in un file.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txtnode_modules
tmp
Conclusione #
Ti abbiamo mostrato 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.
Sentiti libero di lasciare un commento in caso di domande.