2009-10-21 16 views
45

Voglio utilizzare rsync a sincronizzare due directory in entrambe le direzioni.RSync: Come si sincronizza in entrambe le direzioni?

mi riferisco alla sincronizzazione in senso classico (non come si intende nei manuali rsync):
voglio aggiornare le directory in entrambe le direzioni, a seconda di quale di loro è più recente.

Questo può essere fatto da rsync (preferibile in modo Linux)?
In caso negativo, quali altre soluzioni esistono?

+2

Credo che in http://serverfault.com/ avrai risposte migliori. – voyager

risposta

43

Basta eseguirlo due volte, con la modalità "più recente" (-u o --update flag) più -t (per copiare il tempo di modifica del file), -r (per le cartelle ricorsive) e -v (per l'output dettagliato a vedere che cosa sta facendo):

rsync -rtuv /path/to/dir_a/* /path/to/dir_b 
rsync -rtuv /path/to/dir_b/* /path/to/dir_a 

Questo non gestirà eliminazioni, ma non sono sicuro che ci sia una buona soluzione a questo problema solo con sync'ing periodica.

+1

Poiché la domanda riguardava rsync, contrassegnerò questa risposta come corretta. –

+1

Ma hai chiesto anche altre soluzioni e Unison ha fatto un lavoro migliore, altrimenti non avrei mai menzionato un altro strumento. Capisco che tu abbia circostanze specifiche che favoriscono l'uso di rsync. – MaD70

+1

Sheesh, ottieni 6 upvotes e ti stai ancora lamentando? Unison è una soluzione davvero interessante e sono lieto che ne abbia parlato. :) – jsight

45

Lo sai Unison File Synchronizer?

Unison è uno strumento di sincronizzazione file per Unix e Windows. Esso consente a due repliche di un insieme di file e directory che devono essere memorizzati su diversi host (o dischi differenti sullo stesso proprietario), modificato separatamente, e poi portato fino a data propagando le cambiamenti in ogni replica l'altro. ...

Nota anche che è resistente al fallimento:

Unison è resiliente al fallimento. È attento a lasciare le repliche e le proprie strutture private in un ragionevole stato in qualsiasi momento, anche in caso di interruzione anomala o interruzione delle comunicazioni .

+0

+1. Unison è il modo migliore per farlo. Double-rsync è difficile da correggere e non gestisce affatto le eliminazioni. – Avdi

+0

Sì, Unison è resiliente ai guasti. Sto aggiornando la mia risposta per sottolineare questo. – MaD70

+2

Non avevo mai sentito parlare di Unison. Sei responsabile di farmi rifare i miei script di backup a casa oggi. – voyager

4

Grazie jsight

rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a 

Questo comporterebbe la seconda sincronizzazione avviene subito dopo il 1 ° sincronizzazione è finita. Nel caso in cui la struttura della directory sia enorme, ciò farà risparmiare tempo, in quanto non è necessario sedersi davanti al pc. Se la struttura è enorme, togliere la roba verbose e il progresso

rsync -ur dir_a dir_b && rsync -ur dir_b dir_a 
1

Usa rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir

ad esempio:

rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff 

sincronizzerà xxx-files a differenti-stuff/xxx-files .Se file differenti/file xxx non esistevano, lo creerà, cioè copierà.

-pogtEtv - solo serie di opzioni per conservare i metadati del file, oltre a v - verbose e r - ricorsivo

--progress - Mostra avanzamento di sincronizzazione in tempo reale - super utile se si copiano file di grandi dimensioni

--bwlimit=2000 - imposta la massima velocità di copia/sincronizzazione (bw = larghezza di banda)

PS rsync è di fondamentale importanza quando si lavora su rete in caso di macchina locale è possibile utilizzare comandi come cp.

Buona fortuna!

-3

se si desidera sincronizzare in entrambi i sensi e anche attivare eliminazione di file utilizzare questa seguenti comandi

rsync -u -r --delete dir_a dir_b 
rsync -u -r --delete dir_b dir_a 
+2

Questo eliminerà i nuovi file in dir_b, quindi usalo solo se 'dir_b' non ottiene nuovi file. Ma in quel caso, '--delete' nel secondo comando è probabilmente inutile. –

Problemi correlati