2009-10-21 9 views
45

Chcę użyć rsync do zsynchronizować dwa katalogi w obu kierunkach.RSync: Jak mogę synchronizować w obu kierunkach?

odsyłam do synchronizacji w sensie klasycznym (nie jak to rozumie się w podręcznikach rsync):
Chcę zaktualizować katalogi w obu kierunkach, zależności od tego, która z nich jest nowsze.

Czy można to zrobić za pomocą rsync (najlepiej w Linuksie)?
Jeśli nie, jakie inne rozwiązania istnieją?

+2

Uważam, że w http://serverfault.com/ dostaniesz lepsze odpowiedzi. – voyager

Odpowiedz

43

Po prostu uruchom dwa razy, z "nowszym" trybem (-u lub --aktualizuj flagę) plus -t (aby skopiować czas modyfikacji pliku), -r (dla folderów rekursywnych), i -v (dla szczegółowych wyników do zobaczyć, co robi):

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

to nie zajmie usuwa, ale nie jestem pewien, że jest to dobre rozwiązanie tego problemu tylko synchronizując okresowych.

+1

Ponieważ pytanie dotyczyło rsync, zaznaczę tę odpowiedź jako poprawną. –

+1

Ale pytałeś o inne rozwiązania, a Unison wykonał lepszą pracę, inaczej nigdy nie wspomniałbym o innym narzędziu. Rozumiem, że być może masz szczególne okoliczności, które sprzyjają korzystaniu z rsync. – MaD70

+1

Sheesh, dostajesz 6 przegranych i wciąż narzekasz? Unison to naprawdę ciekawe rozwiązanie i cieszę się, że o tym wspomniałeś. :) – jsight

45

Czy znasz Unison File Synchronizer?

Unison to narzędzie do synchronizacji plików dla systemów Unix i Windows. Umożliwia ona dwa repliki zbiór plików i katalogów mają być przechowywane na różnych hostów (lub różnych dyskach w tym samym gospodarz), zmodyfikowane oddzielnie, a następnie uaktualniane przez propagowanie zmian w każdej replice do inny. ...

Należy również zauważyć, że jest odporna na uszkodzenia:

Unison jest odporna na uszkodzenia. To jest uważać, aby pozostawić repliki i ich własne prywatne struktury w sensownym stanie przez cały czas, nawet w przypadku anormalnego zakończenia lub błędów komunikacji w przypadku .

+0

+1. Unison to najlepszy sposób na zrobienie tego. Podwójna rsync jest trudna do uzyskania i nie radzi sobie z usuwaniem. – Avdi

+0

Tak, Unison jest odporny na błędy. Aktualizuję moją odpowiedź, aby to podkreślić. – MaD70

+2

Nie słyszałem o Unisono. Jesteś odpowiedzialny za to, żebym wykonał ponownie swoje skrypty do tworzenia kopii zapasowych w domu. – voyager

4

Dzięki jsight

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

Spowodowałoby drugim synchronizacji dzieje natychmiast po 1 sync jest skończona. W przypadku ogromnej struktury katalogów zaoszczędzi to czas, ponieważ nie trzeba siedzieć przed komputerem. Jeżeli konstrukcja jest ogromny, usuń rozwlekły i postępu rzeczy

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

Używaj rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir

na przykład:

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

zsynchronizuje XXX-plików na inny-stuff/XXX-Files .Jeżeli pliki different-stuff/xxx nie istnieją, zostaną utworzone - tzn. skopiowane.

-pogtEtv - po prostu grono opcji zachowania metadanych pliku, plus v - gadatliwy i R - rekurencyjne

--progress - pokaż postęp synchronizacji w czasie rzeczywistym - bardzo przydatna w przypadku kopiowania dużych plików

--bwlimit=2000 - ustawia maksymalną prędkość kopiowania/synchronizacji (bw = szerokość pasma)

PS rsync ma krytyczne znaczenie, gdy pracujesz przez sieć w przypadku komputera lokalnego, możesz użyć komend takich jak cp.

Powodzenia!

-3

jeśli chcesz synchronizować w obu kierunkach, a także aktywować Usuwanie plików użyć tego następujące polecenia

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

Spowoduje to usunięcie nowych plików w dir_b, więc używaj tego tylko wtedy, gdy 'dir_b' nie pobiera nowych plików. Ale w takim przypadku '--delete' w drugim poleceniu jest prawdopodobnie bezużyteczne. –