RSYNC – Esempi pratici di utilizzo del comando Linux per la sincronizzazione di files e cartelle

RSYNC – Esempi pratici di utilizzo del comando Linux per la sincronizzazione di files e cartelle

Rsync (Remote Sync) è il comando più comunemente usato per copiare e sincronizzare file e directory da remoto e localmente nei sistemi Linux / Unix. Con l’aiuto del comando rsync è possibile copiare e sincronizzare i dati in remoto e localmente tra directory, dischi e reti, eseguire backup dei dati e mirroring tra due macchine Linux.

Questo articolo spiega gli usi di base e avanzati del comando rsync per trasferire i files in remoto e/o localmente su macchine basate su Linux.

Non è necessario essere utenti root per eseguire il comando rsync.

Alcuni vantaggi e funzionalità del comando Rsync

  • Copia e sincronizza in modo efficiente i file da o verso un sistema remoto.
  • Supporta la copia di collegamenti, dispositivi, proprietari, gruppi e autorizzazioni.
  • È più veloce di scp (Secure Copy) perché rsync utilizza il protocollo di aggiornamento remoto che consente di trasferire solo le differenze tra due set di file.
    La prima volta, copia l’intero contenuto di un file o di una directory dall’origine alla destinazione, ma dalla volta successiva copia solo i blocchi e i byte modificati nella destinazione.
  • Rsync consuma meno larghezza di banda in quanto utilizza il metodo di compressione e decompressione durante l’invio e la ricezione di dati su entrambe le estremità.

Sintassi di base del comando rsync

# rsync options source destination
Alcune opzioni comuni spesso utilizzate con rsync
  1. -v : verbose ( dettaglio delle operazioni )
  2. -r : copia i dati ricorsivamente (ma non conserva data e ora,permessi )
  3. -a : archive mode, copia i dati ricorsivamente (conserva data e ora,permessi ,symbolic links, user & group,ownerships )
  4. -z : compress file data ( comprime i dati )
  5. -h : human-readable, numeri di output leggibili dall’uomo

Installare rsync nella macchina Linux

Possiamo installare il pacchetto rsync con i seguenti comandi.

 # yum install rsync (On Red Hat based systems)

# apt-get install rsync (On Debian based systems)

1. Copia/Sincronizzazione di Files e Directory localmente

Copia/Sincronizzazione di File su un computer locale

Il seguente comando sincronizzerà un singolo file su un computer locale da una posizione a un’altra posizione. In questo esempio, un nome file backup.tar deve essere copiato o sincronizzato nella cartella / tmp / backups /.

[root@blograffo]# rsync -zvh backup.tar /tmp/backups/

created directory /tmp/backups

backup.tar

sent 14.71M bytes received 31 bytes 3.27M bytes/sec

total size is 16.18M speedup is 1.10

Nell’esempio sopra, si può vedere che se la destinazione non esiste già, rsync creerà automaticamente la directory .

Copia/Sincronizzazione di cartelle ( directory ) su un computer locale

Il comando seguente trasferirà o sincronizzerà tutti i file da una directory a un’altra directory nella stessa macchina.
In questo esempio, / root / rpmpkgs contiene alcuni file del pacchetto rpm e si desidera che la directory venga copiata nella cartella
/ tmp / backups /.

[root@blograffo]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 4.99M bytes received 92 bytes 3.33M bytes/sec

total size is 4.99M speedup is 1.00

2. Copia/Sincronizzazione di Files e Directory da o verso server remoto

Copia di una cartella ( directory ) da un server locale ad un server remoto

Questo comando sincronizzerà una directory da un computer locale a un computer remoto. Ad esempio: nel computer locale è presente una cartella “rpmpkgs” che contiene alcuni pacchetti RPM e si desidera che il contenuto della directory locale venga inviato a un server remoto, è possibile utilizzare il comando seguente.

[root@blograffo]$ rsync -avz rpmpkgs/ [email protected]:/home/

[email protected]’s password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes received 91 bytes 399476.80 bytes/sec

total size is 4991313 speedup is 1.00

Copia di una cartella ( directory ) da un server remoto ad un server locale

Questo comando ti aiuterà a sincronizzare una directory remota con una directory locale. Qui in questo esempio, una directory / home / tarunika / rpmpkgs che si trova su un server remoto viene copiata nel tuo computer locale in / tmp / myrpms.

[root@blograffo]# rsync -avzh [email protected]:/home/tarunika/rpmpkgs /tmp/myrpms

[email protected]'s password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes received 4.99M bytes 322.16K bytes/sec

total size is 4.99M speedup is 1.00

 

3. Copia/Sincronizzazione con RSYNC su SSH

Con rsync, possiamo usare SSH (Secure Shell) per il trasferimento dei dati; usando il protocollo SSH durante il trasferimento dei nostri dati possiamo essere certi che i dati vengono trasferiti in una connessione protetta con crittografia e nessuno potrà leggerli durante il trasferimento.

Inoltre, spesso, la connessione SSH è l’unica disponibile su determinati hosting che escludono altri protocolli di trasferimento

Copiare un File da un Server Remoto ad un Server Locale con SSH

Per specificare un protocollo con rsync è necessario fornire l’opzione “-e” con il nome del protocollo che si desidera utilizzare. In questo esempio, useremo “ssh” con l’opzione “-e” ed eseguiremo il trasferimento dei dati.

[root@blograffo]# rsync -avzhe ssh [email protected]:/root/install.log /tmp/
[email protected]’s password:
receiving incremental file list
install.log
sent 30 bytes received 8.12K bytes 1.48K bytes/sec
total size is 30.74K speedup is 3.77

Copiare un File da un Server Locale ad un Server Remoto con SSH

[root@blograffo]# rsync -avzhe ssh backup.tar [email protected]:/backups/
[email protected]’s password:
sending incremental file list
backup.tar
sent 14.71M bytes received 31 bytes 1.28M bytes/sec
total size is 16.18M speedup is 1.10

4. Mostrare l’avanzamento mentre si copiano dati con RSYNC

Per mostrare l’avanzamento durante il trasferimento dei dati da una macchina a un’altra macchina, possiamo usare l’opzione “–progress”. Visualizza i file e il tempo rimanente per completare il trasferimento.

[root@blograffo]# rsync -avzhe ssh –progress /home/rpmpkgs [email protected]:/root/rpmpkgs
[email protected]’s password:
sending incremental file list
created directory /root/rpmpkgs
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
1.02M 100% 2.72MB/s 0:00:00 (xfer#1, to-check=3/5)
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
99.04K 100% 241.19kB/s 0:00:00 (xfer#2, to-check=2/5)
rpmpkgs/nagios-3.5.0.tar.gz
1.79M 100% 1.56MB/s 0:00:01 (xfer#3, to-check=1/5)
rpmpkgs/nagios-plugins-1.4.16.tar.gz
2.09M 100% 1.47MB/s 0:00:01 (xfer#4, to-check=0/5)
sent 4.99M bytes received 92 bytes 475.56K bytes/sec
total size is 4.99M speedup is 1.00

Aggiorno questo articolo settimanalmente… tornate a trovarmi per le opzioni successive!

RSYNC – Esempi con -include, -exclude, –delete

per dubbi o suggerimenti...ci scriviamo nei commenti!!!
RSYNC – Esempi pratici di utilizzo del comando Linux per la sincronizzazione di files e cartelle

3 commenti su “RSYNC – Esempi pratici di utilizzo del comando Linux per la sincronizzazione di files e cartelle

  1. Grazie mille. Per completezza lascio quindi una considerazione riguardo l’ opzione che consente di eliminare sul remoto i file cancellati dalla sorgente. Questa opzione emula il parametro /Mir di Robocopy:
    –delete-{before/after}
    Siccome delete-after cancella i file nella destinazione dopo che é stata eseguita la copia dei nuovi file, immagino sia più protettiva rispetto a possibili errori durante la copia.

  2. Grazie per questo spunto. Usi il termine sincronizzazione. Ma non vedo esempi sulla cancellazione. In stile Robocopy per capirci, tramite /Mir. Mi piacerebbe sapere qualcosa al riguardo. Rsync può fare anche questo? Oppure hai qualche suggerimento su come ottenerlo? O nomi di altri strumenti che lo fanno?
    Grazie!

    1. Se segui il link in fondo alla pagina che hai visitato aprirai un altro articolo con tanti esempi pratici fra cui l’uso dell’opzione –delete che forse è quello che cerchi.
      Effetivamente uso il termine sincronizzazione anche quando di fatto non lo è in senso stretto ma lo faccio perchè proprio il comando in Linux si chiama RemoteSyncronization

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Rispondiamo a tuttilascia un commento per ricevere dettagli o inviaci una email per proporre la stesura di nuove guide.
Available for Amazon Prime