Domanda

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 dei quattro siti.

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

Il controllo del controllo delle versioni non è un problema, non si tratta di una base di codice di per sé.

Sono solo interessato se ci sono soluzioni là fuori (preferibilmente open-source) che si avvicinano a una cosa del genere?

Il mio script per bambini che usa rsync non taglia più la senape, mi piacerebbe fare una sincronizzazione più complessa e intelligente.

Grazie

Modifica: dovrebbe essere basato su UNIX :)

È stato utile?

Soluzione

Hai provato Unison ?

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

Altri suggerimenti

Sembra un lavoro per BitTorrent.

Per ogni nuovo file in ogni sito, crea un file seed bittorrent e inseriscilo in una directory centralizzata accessibile dal web.

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

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

Quindi copi tutti i file seed 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 seed (di nuovo, con "sovrascrivi se impostazioni più recenti") e avvia il download bittorrent su tutti. Questo scaricherà / scaricherà nuovamente tutti i file nuovi / aggiornati.

Scuotere e ripetere, ogni giorno.

A proposito, non ci sarà alcun "download da se stesso", come hai detto nel commento. Se il file è già presente sull'host locale, il relativo checksum verrà verificato e non verrà eseguito alcun download.

Che ne dici di qualcosa sulla falsariga del Global Filesystem di Red Hat, in modo che l'intera struttura sia diviso su tutti i siti su più dispositivi, piuttosto che averlo replicato in ogni posizione?

O forse un sistema di archiviazione di rete commerciale come da LeftHand Networks (disclaimer - I have nessuna idea sui costi e non li ho usati).

Hai molte opzioni:

  • Puoi provare a configurare DB replicato per archiviare i dati.
  • Usa la combinazione di rsync o lftp e script personalizzati, ma non è adatto a te.
  • Usa git repository con un massimo di compressioni e sincronizza tra loro usando alcuni script
  • Poiché la quantità di dati è piuttosto grande, e probabilmente importante, eseguire uno sviluppo personalizzato assumendo un esperto;)

Dai un'occhiata super flessibile .... è piuttosto bello, non l'ho usato in un ambiente su larga scala, ma su un sistema a 3 nodi sembrava funzionare perfettamente.

Sembra un lavoro per Foldershare

Hai provato la patch detect-renamed per rsync ( http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff )? Non l'ho provato da solo, ma mi chiedo se rileverà non solo i file rinominati ma anche quelli duplicati. Se non rileva file duplicati, quindi, immagino, potrebbe essere possibile modificare la patch per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top