Rsync
Da Wikipedia, l'enciclopedia libera.
Livello applicazioni | DHCP, HTTP, HTTPS , SMTP, POP3, IMAP, FTP, SFTP, DNS, SSH, IRC, SNMP, SIP, RTSP, Rsync, Telnet, HSRP, BitTorrent, RTP, SysLog, VoIP,... |
Livello di trasporto | TCP, UDP, SCTP, DCCP ... |
Livello di internetworking | IPv4, IPv6, ICMP, BGP, MPLS, OSPF, RIP, IGRP, IGMP,IPsec... |
Livello di collegamento | Ethernet, WiFi, PPP, Token ring, ARP, ATM, FDDI, LLC, SLIP, WiMAX. HSDPA ... |
Livello fisico | Doppino, Fibra ottica, Cavo coassiale, Codifica Manchester, Codifica 4B/5B, Cavi elettrici, ... |
rsync |
|
---|---|
Sviluppatore | Wayne Davison |
Ultima versione | 3.0.0 / 01 marzo 2008 |
SO | Multipiattaforma |
Genere | Strumenti di sistema |
Licenza | GPL |
Sito web | http://rsync.samba.org |
rsync è un software per Unix che sincronizza file e cartelle da una locazione all'altra minimizzando il trasferimento di dati utilizzando quando possibile la codifica delta.
Un'importante caratteristica di rsync che non trova riscontri in programmi/protocolli simili è che il mirroring avviene attraverso una sola trasmissione di dati per ogni direzione di comunicazione.
rsync può copiare o visualizzare il contenuto delle directory e copiare i files, utilizzando opzionalmente la compressione dei dati e la ricorsione. Per default, rsync effettua la copia attraverso una connessione TCP sulla porta 873.
Indice |
[modifica] Algoritmo
L'algoritmo usato da rsync per la trasmissione efficiente di dati (tipicamente, i contenuti di un file) a un altro computer che dispone di una versione precedente degli stessi dati è stato inventato dal programmatore Australiano Andrew Tridgell, ed è descritto brevemente nel seguito.
Il ricevente spezza la sua copia del file in blocchi contigui di dimensione fissata S, e per ciascuno dei blocchi calcola due checksum: la funzione hash MD4 e un checksum ciclico (meno preciso della MD4). Entrambi i valori vengono inviati al mittente.
Il mittente calcola invece il checksum per tutti i possibili blocchi di lunghezza S della sua versione del file, anche sovrapposti. Il calcolo può essere svolto efficientemente grazie a una proprietà del checksum ciclico: sia c(n) il checksum ciclico del blocco che va dal byte n al byte n + S − 1, allora c(n + 1) dipende solo da c(n) e dal valore dei byte alle posizioni n + 1 e n + S, senza che sia necessario riesaminare i byte da n + 2 a n + S − 1. Per S grandi, il risparmio è notevole.
A questo punto il mittente compara i suoi checksum ciclici con quelli inviati dal ricevente, per verificare se ci sono delle corrispondenze. Se ci sono, viene calcolato e controllato anche il corrispondente hash MD4 (più costoso) per verificare se i blocchi sono effettivamente identici. A questo punto, il mittente invia al ricevente solo le parti del file per cui non sono stati trovati blocchi corrispondenti, insieme a istruzioni su come ricomporre i blocchi già presenti e le parti nuove in modo da ottenere una copia esatta del file originale. Se le due versioni del file hanno molte sezioni in comune, com'è spesso il caso quando si tratta di versioni diverse dello stesso file, rsync può effettuare la sincronizzazione trasmettendo molti pochi dati rispetto alla dimensione dell'intero file.
[modifica] Altre caratteristiche
L'algoritmo descritto sopra costituisce la base del funzionamento di rsync, ma l'applicazione fornisce varie altre funzioni utili per ottimizzare il trasferimento e semplificare la creazione di copie di backup. Fra le altre, possiamo citare l'uso di algoritmi di compressione per ridurre ulteriormente la dimensione dei dati trasferiti, e il supporto al protocollo ssh per realizzare trasferimenti crittografaci e quindi sicuri. In combinazione con utility UNIX standard quali cron, rsync può essere usato per implementare facilmente backup centralizzati dei dati degli utenti su un server centrale, oppure un sistema di mirroring di grandi quantità di dati.
[modifica] Varianti
[modifica] rdiff e rdiff-backup
Esiste un programma di utilità chiamato rdiff che usa l'algoritmo di rsync per generare un file delta contenente la differenza fra due file A e B, nel formato usato da rsync. Il file delta può poi essere applicato in un secondo tempo al file A, trasformandolo nel file B. L'operazione svolta è analoga a quella dei comandi UNIX diff e patch, ma utilizzando un formato più efficiente per memorizzare le differenze.
A differenza di diff, la creazione del file delta richiede due fasi: dapprima viene generato un piccolo file firma da A, quindi il file firma e B vengono usati per generare il file delta. Inoltre, rdiff funziona egregiamente con file binari, per cui invece non è possibile usare diff.
Appoggiandosi a rdiff, un altro programma di utilità chiamato rdiff-backup mantiene un backup di un file o directory su un server remoto, memorizzando i file delta per ogni versione dei dati archiviati. Usando i delta memorizzati, si può poi ricostruire lo stato esatto dei dati in un qualunque momento fissato.
[modifica] rsyncX e rsyncXCD
Una versione speciale di rsync per il file system del Mac OS X, rsyncX, trasferisce anche le cosiddette resource fork (dati addizionali contenuti nei file del Mac), che non sono supportate da rsync (né da altri programmi UNIX). Con Mac OS 10.4, la Apple ha inserito delle modifiche nella propria versione di rsync per fornire funzionalità analoghe.
rsyncXCD è una versione di rsyncX che consente di creare partizioni di boot.
[modifica] Interfaccia grafica
rsync non possiede una propria interfaccia grafica, ma solo quella testuale. Esiste tuttavia il programma Grsync, rilasciato sotto licenza GPL, che implementa una interfaccia grafica per rsync.
[modifica] Windows
Come per altre utilità UNIX, per eseguire rsync su Microsoft Windows è necessario avere installato il pacchetto Cygwin, che fornisce ai programmi una emulazione di ambiente UNIX su Windows. Sono disponibili alcuni pacchetti che includono rsync, cygwin e un programma di installazione, rendendo rsync accessibile agli utenti Windows. Fra gli altri:
- cwRsync (Licenza MIT)
- NasBackup (GNU General Public License), che fornisce anche un'interfaccia grafica
- DeltaCopy (GNU General Public License), che include un'interfaccia grafica e dei servizi di programmazione.
- Unison file Synchronzer (GNU General Public License), che fornisce anche un'interfaccia grafica
Tuttavia, va notato che si possono verificare dei piccoli problemi usando rsync fra macchine con diversi sistemi operativi, in particolare per quanto riguarda le date di modifica dei file, l'accuratezza con cui vengono trasmesse alcune informazioni ausiliarie sui file (proprietario, diritti, ecc.) e le possibili ambiguità fra nomi di file in maiuscolo e minuscolo su Windows.
[modifica] Collegamenti esterni
- (EN) La home page di rsync
- (EN) Tutorial: Using rsync
- (IT) Usare rsync+SSH per il backup
- (IT) Usare rsync per il backup
- (EN) L'algoritmo di rsync
- (EN) La versione di rsync per Mac OS X
- (EN) Unison, un altro tool di sincronizzazione bidirezionale
- (EN) Grsync, interfaccia grafica per rsync basata su GTK
- Portale Software libero: accedi alle voci di Wikipedia che parlano di Software libero