Dwukierunkowa synchronizacja z rsync

Mam folder a / i folder zdalny a/. Teraz uruchamiam coś takiego na Makefile:

get-music:
 rsync -avzru server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music

Kiedy robię sync-music, najpierw pobiera wszystkie diffy z serwera do lokalnego, a następnie odwrotnie, wysyłając wszystkie diffy z lokalnego do serwera.

Działa to bardzo dobrze tylko wtedy, gdy w przyszłości pojawią się tylko aktualizacje lub nowe pliki. Jeśli są skreślenia, to nic nie robi.

W rsync są opcje --delete I --delete-after, które pomagają osiągnąć to, co chcę, ale chodzi o to, że nie działa na synchronizacji dwukierunkowej.

Jeśli chcę usunąć Pliki serwera na syn, gdy pliki lokalne zostały usunięte, to działa, ale jeśli z jakiegoś powodu (wyjaśnione później) mam pliki, które nie są na serwerze, ale istnieją lokalnie i zostały usunięte, chcę je usunąć lokalnie, a nie skopiować (jak to się dzieje).

Rzecz w tym, że mam 3 maszyny W kontekście:

  1. pulpit
  2. notatnik
  3. home-server

Więc czasami, serwer będzie miał pliki, które zostały usunięte za pomocą synchronizacji notebooka, na przykład, a następnie, gdy uruchamiam synchronizację z moim pulpitem (gdzie nadal istnieją usunięte pliki serwera) chcę, aby te pliki zostały usunięte, a nie być kopiowane ponownie na serwer.

Myślę, że jest to możliwe tylko z bazą danych i śladami operacji: P

Jakieś prostsze rozwiązania? Dziękuję.
Author: menjaraz, 2010-05-30

9 answers

Spróbuj Unison: http://www.cis.upenn.edu / ~ bcpierce / unison /

Składnia: unison dirA/ dirB/

Unison pyta, co zrobić, gdy pliki są różne, ale możesz zautomatyzować proces za pomocą następujących opcji, które akceptują domyślne (niekonfliktujące) opcje:

unison -auto dirA/ dirB/

unison -batch dirA/ dirB/ nie zadaje żadnych pytań i pisze, aby uzyskać wynik, ile plików zostało zignorowanych (ponieważ były skonfliktowane).

 58
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 01:11:19

Możesz też spróbować bitpocket: https://github.com/sickill/bitpocket

 8
Author: saif,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-01 06:30:32

Spróbuj tego,

get-music:
 rsync -avzru --delete-excluded server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru --delete-excluded /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music
Testowałem to i zadziałało na mnie. Wykonuję dwukierunkową synchronizację pomiędzy Windows7 (używając Cygwina z zainstalowanym pakietem rsync) i FreeNAS fileserver (FreeNAS działa na FreeBSD z preinstalowanym pakietem Rsync).
 5
Author: Chris Collins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-02 07:00:05

Możesz użyć Osync: http://www.netpower.fr/osync , który jest oparty na rsync z inteligentną propagacją delecji. ma również wiele opcji, takich jak wznowienie wstrzymanego wykonania, miękkie usuwanie i kontrola czasu.

 5
Author: deajan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-18 14:44:14

Ponieważ oryginalne pytanie dotyczy również komputera stacjonarnego i laptopa oraz przykładu z plikami muzycznymi( stąd prawdopodobnie używa GUI), chciałbym również wspomnieć o jednym z najlepszych dwukierunkowych, wieloplatformowych, darmowych i otwartych programów do tej pory: FreeFileSync .

Jest oparty na GUI, bardzo szybki i intuicyjny, wyposażony w filtrowanie i wiele innych opcji, w tym możliwość zdalnego łączenia, przeglądania i interaktywnego zarządzania "kolizjami" (na przykład pliki z podobnymi znacznikami czasu) i przełączanie między dwukierunkowym transferem, dublowaniem i tak dalej.

 4
Author: Dario Fumagalli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 09:41:12

Możesz spróbować csync , jest to silnik synchronizacji pod maską owncloud .

 3
Author: marton78,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-01 09:34:12

Używam teraz SparkleShare https://www.sparkleshare.org/

Działa na mac, linux i windows.

 1
Author: mwm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-30 17:22:03

Tak, istnieje prostsze rozwiązanie o nazwie Resilio Connect . Jestem pewien, że nie jest możliwe wykonanie pełnej 2-drożnej synchronizacji z rsync. Jeśli dodasz więcej maszyn, będzie to jeszcze bardziej skomplikowane. Problem z rsync polega również na tym, że istnieją granice procesora i dysku, powolne obliczenia Delty w pliku dla dużych plików itp., ale rozwiązanie oparte na peer-to-peer będzie działać dobrze. Również Resilio jest wieloplatformowy z najpopularniejszą obsługą systemu operacyjnego, w tym mobilnego. Oto spis dyskusji rsync alternatywy .

 1
Author: Victoria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-07 15:37:55

Nie jestem pewien, czy działa z dwoma synchronizacjami, ale aby --delete zadziałało, musisz również dodać parametr -- recursive.

 0
Author: Boardy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-21 22:31:20