Rsync è fantastico!
Per chi non lo conoscesse, rsync realizza copie incrementali fra una sorgente e una destinazione. Ottimo per i backup via rete di cartelle poichè confronta i timestamp dei file e li invia solo se sono cambiati.
Ma non ci fermiamo qui.
Premessa.
Nella nostra server farm abbiamo molti file di grosse dimensioni che sono i dischi virtuali. Abbiamo necessita di copiarli via internet.
Per file di così grosse dimensioni anche con una banda molto elevata potrebbero volerci giorni per una normale copia.
Utilizzando rsync si può ottimizzare il processo.
Test pratico di copia via internet di un disco di una macchina virtuale da 3GB
es.
time rsync -zave ssh –partial –progress BIGFILE USER@SERVER:PATH
Prima copia
Nella macchina destinazione non esiste nessun file, si tratta di una copia completa del file. Tuttavia tramite l’opzione -z di rsync, i dati vengono compressi prima di essere inviati, siccome a quanto pare, in un disco virtuale ci sono parecchie zone a bassa entropia, la compressione ottiene notevoli risultati.
Come risultato, nonostante la banda sia di 1Mb, la trasmissione del file ha impiegato circa 12 minuti con una banda teorica di 4.34MB/s (e questa volta, la B è maisucola)
Seconda copia
Nella macchina destinazione è stato appena copiato il file, non è stato modificato nè nella sorgente, nè nella destinazione e quindi i timestamp sono gli stessi. rsync se ne accorge è non fa nulla.
Terza copia
Lancio la macchina virtuale nella macchina sorgente, creo un file nella home e spengo. Il disco è cambiato seppur leggermente.
Lanciando rsync questa volta passa un pò di tempo prima dell’effettiva copia (periodo nel quale rsync si accorge dei delta cambiati)
Questa volta la copia termina in circa 2 minuti con una banda teorica di circa 40MB/s
Rsync è fantastico!