rsync (Remote Sync) è un’utilità potente ed efficiente di Linux utilizzata per sincronizzare file e directory tra due posizioni in rete. È comunemente usata per i backup, il mirroring dei dati e il trasferimento efficiente dei file copiando solo le differenze tra origine e destinazione.
Questa guida vi guiderà attraverso l’installazione, l’uso di base e le tecniche avanzate di rsync per aiutarvi a gestire efficacemente i file in rete.
La maggior parte delle distribuzioni Linux ha rsync preinstallato. Per verificare se è installato, eseguire
rsync --versione
Se non è installato, è possibile installarlo utilizzando il gestore di pacchetti della propria distribuzione:
sudo apt install rsync
sudo yum install rsync
sudo dnf install rsync
sudo pacman -S rsync
📌 Come trasferire file da Windows a un server remoto usando rsync via PuTTY SSH?
Per utilizzare rsync su Windows tramite PuTTY SSH, è necessario aver installato:
PuTTY per la connessioneSSH
rsync e OpenSSH su Windows
Pagent (opzionale) per l’autenticazione automatica con la chiave SSH
Se avete scaricato MSYS2, potete installare facilmente rsync usando pacman, il gestore di pacchetti di MSYS2.
pacman -Syu
pacman -Su
questo passo assicura che sia disponibile l’ultima versione del gestore di pacchetti.
pacman -S rsync
💡 Se avete bisogno di openssh per il trasferimento SSH, installate anche quello:
pacman -S openssh
Verifica dell’installazione
Per verificare che rsync sia stato installato correttamente, eseguire:
rsync --versione
La sintassi di base di rsync è:
rsync [opzioni] sorgente destinazione
Per sincronizzare i file tra due directory locali:
rsync -av /sorgente/directory/ /destinazione/directory/
Il trattino / nell’origine assicura che venga copiato solo il contenuto della directory e non la directory stessa.
Per trasferire file da un sistema locale a un server remoto:
rsync -avz /locale/directory/ user@remote_host:/remote/directory/
*Dopo aver aggiunto il comando in MSYS2, aggiungeremo i dati SSH per connetterci al server remoto e il risultato verrà visualizzato:
Questo comando copia in modo sicuro i file sul server remoto utilizzando SSH.
Verificare se il comando è stato eseguito con successo sul server remoto:
Per copiare i file da un server remoto al computer locale. Per impostazione predefinita, rsync utilizza SSH per la comunicazione sicura. È possibile specificare esplicitamente SSH con:
rsync -avz -e ssh /locale/directory/ user@remote_host:/remote/directory/
Se SSH utilizza una porta non predefinita (ad esempio, 2222), specificarla in questo modo:
rsync -avz -e "ssh -p 2222" /locale/directory/ user@remote_host:/remote/directory/
Per eliminare i file extra nella destinazione che non sono presenti nell’origine:
Per prima cosa aggiungiamo i file extra nel terminale PuttySSH:
cd /home/user/test_backup/
toccare file1.txt file2.log file3.jpg
mkdir extra_files
toccare extra_files/file_vecchio.txt
Ora sincronizzate la directory senza alcuni file e rsync cancellerà i file che non sono più presenti nella sorgente:
rsync -av --delete /source/directory/ /destination/directory/
cosa fa?
Tutti i file presenti sul server ma NON in test/locale vengono eliminati.
Risultato MSYS2
Risultato PuttySSH
Attenzione: Usare con cautela il comando –cancella, che rimuove in modo permanente i file dalla destinazione.
Per escludere file o directory specifiche:
rsync -av --exclude 'file_o_directory' /source/ user@remote_host:/destination/
Risultato MSYS2
Risultato PuttySSH
Per esclusioni multiple, utilizzare:
rsync -av --exclude={'file1','dir1','*.log'} /sorgente/ utente@host_remoto:/destinazione/
È possibile eseguire rsync in background utilizzando nohup:
nohup rsync -avz /source/ user@remote_host:/destination/ &
In questo modo il processo continua anche dopo il logout.
Nella direttiva local abbiamo aggiunto un nuovo file new_file.txt33333333, poi abbiamo disconnesso il terminale PuttySSH e il comando precedente ci permette di inviare i file anche quando il server è disconnesso.
Per pianificare la sincronizzazione automatica utilizzando cron, aprire crontab:
crontab -e
Aggiungere un lavoro per eseguire rsync ogni giorno a mezzanotte:
0 0 * * * rsync -avz /source/ user@remote_host:/destination/
rsync è uno strumento versatile e potente per la sincronizzazione e il trasferimento di file in rete. Che si tratti di backup di dati, mirroring di directory o migrazione di file tra server, rsync offre una soluzione efficiente e affidabile. Sfruttando le sue varie opzioni e capacità di automazione, è possibile gestire efficacemente i file in ambienti Linux.