Zsynchronizuj katalog lokalny ze zdalnym katalogiem w systemie Linux

14

Mam folder z kilkoma plikami i trochę miejsca na serwerze WWW. Chcę wykonać dwukierunkową synchronizację między folderem lokalnym a zdalnym w systemie Linux, tylko w czasie modyfikacji. Jak mam to zrobic? btw Nie mogę nic zainstalować na serwerze, dla wszystkich celów i celów jest to po prostu przestrzeń.

Uwaga: Mam już skonfigurowane pary kluczy rsa, aby można było to zrobić po cichu.

Andrew Redd
źródło

Odpowiedzi:

12

Wybranym narzędziem do synchronizacji jednokierunkowej jest rsync, a narzędziem do synchronizacji dwukierunkowej jest Unison . Oba wymagają, aby plik wykonywalny był dostępny po obu stronach. Jeśli możesz uczynić plik wykonywalnym po stronie serwera, upuść unisonowy plik binarny i uczyń go wykonywalnym.

Jeśli masz lokalnie Linux, * BSD, Solaris lub Mac OS X, prawdopodobnie możesz użyć systemu plików FUSE, aby przestrzeń serwera WWW wyglądała jak lokalny system plików - sshfs powinien działać, ponieważ wydaje się, że masz dostęp do ssh. Następnie użyj unison „lokalnie”.

Należy również pamiętać, że większość oprogramowania do kontroli wersji (CVS / Subversion oraz rozproszone VCS) ma synchronizację jako funkcję przydrożną (odprawa na jednej maszynie i na drugiej).

Gilles „SO- przestań być zły”
źródło
4

Jeśli jest zainstalowany na serwerze, użyj rsyncjego kompilacji do dokładnie tego zadania.

Aby uzyskać dwukierunkową czynność, zrób to (cytat z http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Aby dwukierunkowo synchronizować katalog /src/foona hostAna /dest/foona hostB, w tym wszystkich podkatalogów, należy uruchomić te polecenia na hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

Pierwsze polecenie popycha wszystkie pliki, które są nowsze na hostAcelu hostB.

Drugie polecenie pobierze wszystkie pliki, które są nowsze na hostBcelu hostA. Krytyczne opcje to:

podczas kopiowania należy zachować czasy modyfikacji plików. -arobi to i inne rzeczy;

Jeśli chcesz zachować tylko czasy modyfikacji, użyj -tzamiast tego.

Aby pominąć wszystkie nowsze pliki w miejscu docelowym: -urobi to.

tante
źródło
o ile przeczytałem, rsync nie działa dwukierunkowo, a kiedy próbuję, pojawia się błąd „niezgodność wersji protokołu - czy twoja powłoka jest czysta?”
Andrew Redd,
hostanswers.net/linux-hosting/rsync-protocol-version-mismatch może pomóc rozwiązać problem niedopasowania wersji. Dla dwukierunkowej aktualizacji zaktualizowałem swoją odpowiedź.
tante
1
Rsync w ogóle nie jest przystosowany do synchronizacji dwukierunkowej. Po pierwsze, nie ostrzeże Cię, jeśli dojdzie do konfliktu. Zamiast tego użyj Unison, jest to odpowiednie narzędzie do pracy.
Gilles „SO- przestań być zły”
1
To psuje się okropnie, jeśli serwer A będzie w przyszłości od serwera B. W moim przypadku mam 13 godzin przed serwerem zdalnym.
Tim Post
1

Za każdym razem, gdy potrzebujesz synchronizacji między dwoma folderami, rsyncto świetny elastyczny wybór. Problem polega na tym, że rsync nie obsługuje protokołu ftp. Dobrym rozwiązaniem tego problemu jest curlFtpFS :

CurlFtpFS to system plików umożliwiający dostęp do hostów FTP oparty na FUSE i libcurl.

Z curlFtpFs całkiem łatwo dołączyć zdalny folder ftp do swojego systemu plików.

Oto krótki przykład pokazujący użycie obu narzędzi:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Przeczytaj stronę podręcznika, aby uzyskać więcej informacji.

Jeśli nie chcesz instalować curlFtpFS i chcesz synchronizować niektóre pliki, istnieje wiele narzędzi ftp, które oferują takie funkcje synchronizacji:

  • FTPSync.pl - prosty skrypt PERL do synchronizacji lokalnego i zdalnego katalogu
  • weex - nieinteraktywny klient FTP do aktualizacji stron internetowych
  • filezilla - klient FTP GUI z wieloma funkcjami
  • ...
echox
źródło
1. Rsync nie nadaje się do synchronizacji dwukierunkowej , zamiast tego użyj Unison. 2. Skąd pochodzi FTP? wzmianka o kluczach RSA w pytaniu sugeruje raczej ssh (a zatem sshfs).
Gilles „SO- przestań być zły”
Masz rację, FTP nie jest wymienione w pytaniu. Szczerze mówiąc, myślę, że była to kombinacja „przestrzeni internetowej” i „to po prostu przestrzeń”. i trochę mojego zmęczenia wczoraj.
echox