Czy Rsync pozwala na synchronizację plików w obie strony?

25

Utworzyłem kopię zapasową serwera linuksowego przy użyciu rsync z cygwin. Mam teraz idealną kopię serwera na moim laptopie z systemem Windows. Jeśli usunę lub zmodyfikuję plik na moim laptopie i uruchomię ponownie program rsync w programie cygwin, czy usunie / zaktualizuje ten sam plik na serwerze? Mam wrażenie, że jeśli usunę / zmodyfikuję na serwerze i uruchomię rsync na moim laptopie, usunie / zmodyfikuje lokalny plik na moim laptopie, ale czy działa to w odwrotnej kolejności?

Dan Hastings
źródło
12
To nie jest odpowiedź na twoje pytanie, ale powinieneś rzucić okiem unison. To narzędzie do synchronizacji, które zapisuje stan pliku na obu kopiach, a tym samym umożliwia synchronizację dwukierunkową. Istnieje również pakiet cygwin.
Dubu,

Odpowiedzi:

29

Rsync wykonuje synchronizację jednokierunkową, jednak to Ty decydujesz, w którą stronę ma się odbyć synchronizacja.

Składnia komendy Rsync jest następująca:

rsync [OPTION...] SRC... [DEST]

Pamiętaj, że określasz synchronizację od źródła do miejsca docelowego. Źródłem i celem może być dowolna ścieżka lokalna lub zdalna.

Na przykład, jeśli chcesz skopiować pliki z serwera na laptop, robisz:

rsync [OPTION...] <server-path> <laptop-path>

Aby wykonać synchronizację w przeciwnym kierunku:

rsync [OPTION...] <laptop-path> <server-path>

Tak więc, aby odpowiedzieć na twoje pytanie: zależy to od sposobu wykonania rsync.

Jeśli chcesz usunąć pliki w miejscu docelowym, musisz użyć --deleteopcji. Ale bądź ostrożny, ponieważ jeśli popełnisz błąd przy określaniu źródła, usuniesz wszystko na miejscu docelowym. Bezpieczniej jest --deletenajpierw przetestować synchronizację bez opcji, a gdy będziesz zadowolony z jej działania, możesz dodać --deleteopcję.

Jak sugeruje masegaloeh w komentarzach poniżej, -nlub --dry-runopcja może być również użyta do przetestowania rsynczachowania polecenia.

grekasius
źródło
9
Uwaga dodatkowa: Do testowania zachowania rsync możesz użyć parametru -nlub --dry-run, abyś wiedział, który plik zostanie usunięty i zmodyfikowany
masegaloeh
1

Narzędzie otoki napisane w python3 o nazwie, bsyncktóre otacza findi rsynckomendę upraszcza zadanie. Repozytorium Github: https://github.com/dooblem/bsync

Nie bój się, gdy jest na github (tj. W sposób, który uważasz, że musisz być programistą, aby korzystać z tego narzędzia).

biocyberman
źródło
-1

rozważ użycie opcji --delete-after, a nie --delete, zapewni to, że Twój odbiorca usunie pliki po przesłaniu, a nie wcześniej.

Moti
źródło
Rozumiem, że opinie są negatywne, ponieważ OP nie próbuje rsyncniczego usunąć. Sam usuwa rzeczy. To powiedziawszy, pomocna wskazówka dla rsync'ingu w ogóle. Dzięki.
harperville