Come copiare o trasferire file su 2 server Linux con RSync
Al giorno d’oggi gli amministratori di sistema Linux hanno molti strumenti e opzioni per facilitare il trasferimento di dati e file da e verso i server. SSH e FTP sono i protocolli più popolari per il trasferimento dati. FTP, da un lato, è popolare per la sua facilità d’uso ma, dall’altro lato, SSH è molto più sicuro e affidabile. Per il trasferimento dati basato su SSH, scp e sftp sono due strumenti specializzati utilizzati dagli amministratori di sistema da molti anni. Tuttavia, nessuno di questi offre tutte le funzionalità e le capacità fornite da rsync .
In questo tutorial spiegheremo come funziona Rsync e come puoi usarlo per trasferire file e cartelle da e verso server Linux. Alla fine di questo tutorial puoi anche trovare un Rsync Cheat Sheet con la spiegazione dei parametri del comando rsync.
Che cosa è RSync
rsync è un’utilità per trasferire e sincronizzare in modo efficiente file tra computer e server su reti locali e pubbliche. Rsync sta per “remote sync” e utilizza un algoritmo che riduce al minimo la quantità di dati copiati trasferendo solo i file che sono stati modificati.
Come installare Rsync su un server Linux
Per installare Rsync sul tuo server Linux, puoi utilizzare i seguenti comandi in base alla tua distribuzione Linux:
sudo apt-get install rsync // per Debian/Ubuntu pacman -S rsync // per Arch Linux sudo dnf install rsync // per Fedora/CentOS/RHEL e Rocky Linux/AlmaLinux
Esempio 1: Copia un’intera directory dal server locale a un server remoto
Supponendo che tu sia connesso a un server A e desideri trasferire un’intera directory denominata public_html che si trova in “/home” a un server B ( IP: 192.168.1.3 ), puoi utilizzare il seguente comando:
rsync -arvzh /home/public_html root@192.168.1.3:/home/
Esempio 2: Copia una directory dal server remoto a una macchina locale
Il seguente comando ti aiuterà a sincronizzare l’intera directory /var/backup da un server remoto ( IP: 192.168.1.3 ) a un server a cui sei attualmente connesso:
rsync -arvzh root@192.168.1.3:/var/backup /var/
Esempio 3: utilizzare RSync per il trasferimento di file tra server con porta SSH personalizzata
Se desideri trasferire file a un server che utilizza una porta SSH non standard, allora devi fornire il comando rsync con l’ argomento -e e specificare la porta SSH personalizzata utilizzata dal server di destinazione. Nel nostro esempio qui sotto assumiamo che la porta SSH sia 2222 e trasferiremo il file /home/public_html/index.html.
rsync -avzh -e 'ssh -p 2222' /home/public_html/index.html root@192.168.1.3:/home/public_html/
Esempio 4: Eliminazione automatica dei file sul server di origine dopo il trasferimento riuscito
Nei casi in cui si avvia un trasferimento di dati, ad esempio per scopi di backup, potrebbe essere necessario eliminare i file dal server di origine dopo che sono stati trasferiti al server di backup/destinazione.
rsync -avzh --remove-source-files /root/backup.tar.gz root@192.168.1.3:/root/
Esempio 5: testare il comando RSync con Dry Run
Se non hai ancora familiarità con rsync, potresti non voler eseguire comandi che potrebbero mandare in tilt i tuoi dati sui server di origine o di destinazione. In questo caso, rsync fornisce un parametro meraviglioso che non apporterà modifiche reali, ma mostrerà invece l’output di ciò che farebbe il tuo comando.
rsync -avzh --dry-run /root/backup.tar.gz root@192.168.1.3:/root/
Esempio di output:
[root@ubuntu-server:~]# rsync --dry-run --remove-source-files -zvh /root/backup.tar.gz root@192.168.1.3:/root/ root@192.168.1.3's password: backup.tar.gz sent 50 bytes received 94 bytes 95.15 bytes/sec total size is 267.30K speedup is 3,873.97 (DRY RUN)