2008-10-24 29 views
10

Ho una grande quantità di dati da mantenere sincronizzati su 4 o 5 siti in tutto il mondo, circa mezzo terabyte in ciascun sito. Questo cambia (o aggiunge o cambia) di circa 1,4 Gigabyte al giorno, e i dati possono cambiare in uno qualsiasi dei quattro siti.Qual è il modo migliore per sincronizzare grandi quantità di dati in tutto il mondo?

Una grande percentuale (30%) dei dati è pacchetti duplicati (forse JDK impacchettati), quindi la soluzione dovrebbe includere un modo di rilevare il fatto che ci sono cose che si trovano sul computer locale. e prendili invece di scaricare da un altro sito.

Il controllo del controllo delle versioni non è un problema, questo non è un codice base per-se.

Mi interessa solo se ci sono soluzioni (preferibilmente open-source) che si avvicinino a una cosa del genere?

Il mio script bambino con rsync non taglia più la senape, mi piacerebbe fare una sincronizzazione più complessa e intelligente.

Grazie

Edit: Questo dovrebbe essere basata su UNIX :)

risposta

12

Hai provato Unison?

Ho avuto buoni risultati con esso. È fondamentalmente un rsync più intelligente, che forse è quello che vuoi. Esiste una lista che confronta gli strumenti di sincronizzazione dei file here.

+0

Questo è * quasi * giusto, e in particolare mi piace il collegamento al sito web. Con Unison, non guarda prima il filesystem locale per la soluzione, ad esempio nella directory padre o in una directory sorella (mi piacerebbe anche definirlo). Se dimensioni, nome, mod-time, checksum sono gli stessi, afferralo invece ... – Spedge

+0

Perché non usi invece i link per questo, invece di replicare questi JDK e quant'altro? Non sembra giusto preoccuparsi di duplicare cose che certamente non hanno bisogno di duplicazione. Unison sincronizzerà i collegamenti ... in modo che funzionino, e allevi alcune delle esigenze di spazio e alcuni mal di testa –

1

Hai un sacco di opzioni:

  • È possibile provare a creare replicato DB per memorizzare i dati.
  • Utilizzare la combinazione di rsync o lftp e script personalizzati, ma questo non fa per voi.
  • Usa git pronti contro termine con compressioni max e sincronizzazione tra di loro utilizzando alcuni script
  • Poiché la quantità di dati è piuttosto grande, e probabilmente importante, effettuare una po 'di sviluppo personalizzato sul noleggio di un esperto;)
5

Sembra un lavoro per BitTorrent.

Per ogni nuovo file in ogni sito, creare un file seme bittorrent e inserirlo in una directory web-accessibile centralizzata.

Ogni sito quindi scarica (tramite bittorrent) tutti i file. Ciò consentirà la condivisione della larghezza di banda e il riutilizzo automatico delle copie locali.

La ricetta effettiva dipenderà dalle vostre esigenze. Ad esempio, è possibile creare 1 seme bittorrent per ogni file su ciascun host e impostare il tempo di modifica del file seme in modo che corrisponda al tempo di modifica del file stesso. Dato che lo farai ogni giorno (ogni ora?) È meglio usare qualcosa come "make" per (ri) creare i file seme solo per i file nuovi o aggiornati.

Quindi si copiano tutti i file seme da tutti gli host nella posizione centralizzata ("tracker dir") con l'opzione "sovrascrivi solo se più recente". Questo ti dà una serie di semi torrent per tutte le copie più recenti di tutti i file.

Quindi ogni host scarica tutti i file seme (di nuovo, con "sovrascrivi se nuove impostazioni") e avvia il download bittorrent su tutti loro. Questo scaricherà/scaricherà nuovamente tutti i file nuovi/aggiornati.

Rince e ripeti, ogni giorno.

BTW, non ci sarà "download da solo", come hai detto nel commento. Se il file è già presente sull'host locale, il suo checksum verrà verificato e non si verificherà alcun download.

+0

Mi piace questa idea. Il torrenting risolverebbe sicuramente i problemi di larghezza di banda e il download di cose da solo sarebbe geniale. Una domanda aggiuntiva a questo sarebbe, tuttavia, come faccio a capire ciò che ho bisogno di sincronizzare in qualsiasi momento? Avrei bisogno di creare un elenco delle modifiche ... non so se posso farlo: S – Spedge

+0

Per come la vedo io, puoi pensare in termini delle solite operazioni di copia/spostamento, sostituendo bittorrent al posto del file attuale trasferimenti. Modificare la mia soluzione per riflettere questo. – ADEpt

2

ne dite qualcosa sulla falsariga di Global Filesystem di Red Hat, in modo che l'intera struttura è divisa su ogni sito su dispositivi multipli, piuttosto che avere tutto replicata in ogni posizione?

O forse un sistema di archiviazione di rete commerciale come da LeftHand Networks (dichiarazione di non responsabilità - Non ho idea di costi e non li ho usati).

1

Dai un'occhiata alla massima flessibilità .... è abbastanza bello, non l'ho usato in un ambiente su larga scala, ma su un sistema a 3 nodi sembrava funzionare perfettamente.

Problemi correlati