Mam w domu trzy komputery i chciałbym, aby /home/
drzewo folderów zostało zsynchronizowane między tymi trzema.
Wszelkie pliki / foldery (oprócz ukrytych), które są modyfikowane / dodawane / usuwane na jednym z trzech komputerów, są aktualizowane na pozostałych dwóch.
Czy to rsync
wystarczy? i jak?
Odpowiedzi:
Oto lista rzeczy, które potencjalnie mogą rozwiązać ten problem, każda z nich równoważy kompromisy, które musisz wykonać inaczej, więc będziesz musiał dokonać własnych wyborów i wypróbować rzeczy na własną rękę:
Unison - jak wspominają inni, jest uruchamiany ręcznie, ale jest bardzo szybki, niezawodny i skuteczny. Wymaga synchronizacji obu komputerów jednocześnie. Ma ładny interfejs użytkownika, który pozwala radzić sobie z prawie nieuniknionymi konfliktami, a także poprawnie śledzi i propaguje usuwanie. Aplikacja / pakiet graficzny nazywa się unison-gtk.
OwnCloud - Magazyn w chmurze działa na twoim serwerze. Potrzebujesz maszyny, żeby wyjść. Wymaga rozsądnej konfiguracji. Działa na serwerze pełny serwer Apache 2 i baza danych SqlLite lub MySQL. Działa podobnie jak Dropbox z klientem stacjonarnym, ale serwer jest pod twoją kontrolą. edycja: OwnCloud przeszedł niedawno pewne zmiany w sposobie prowadzenia projektu, a teraz ma nowe całkowicie otwarte źródło (tj. brak zamkniętej edycji „Enterprise”) pod pozorem NextCloud (patrz wywiad z youtube z oryginalnym deweloperem OwnCloud po więcej szczegółów).
SparkleShare - używa git do synchronizacji plików. Według strony głównej: dobre dla wielu mniejszych plików, nie dobre dla wielu dużych plików, takich jak muzyka lub kolekcja zdjęć.
Seafile - zapewnia komponent serwera, który można zainstalować na komputerze lokalnym. Seafile używa modelu danych podobnego do git do śledzenia zmian. Zapewnia klientom synchronizacji na komputery stacjonarne, tablety i smartfony. Wpis na blogu opisujący konfigurację można znaleźć na stronie http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/
Osync - „... dwukierunkowe narzędzie do synchronizacji plików napisane w języku bash i oparte na rsync. Działa w lokalnych i / lub zdalnych katalogach za pośrednictwem tuneli ssh. Jego głównym celem jest uruchomienie jako zadanie cron” (tekst ze strony internetowej)
PowerFolder - projekt GPL v2 oparty na Javie. Główna strona internetowa oferuje oferty komercyjne, więc nie jest jasne, jak korzystać z dostarczonego pliku .jar.
Rsync - szybki i skuteczny, działający od dziesięcioleci, jednak nie zachowuje historii, więc musisz wybrać kierunek, aby zdecydować, czy plik jest nowy, czy usunięty. Dostępne są narzędzia graficzne, takie jak gwRsync .
Lsyncd - monitoruje foldery / pliki w celu wyzwolenia replikacji rsync
dvcs-autosync - napisany w Pythonie, używa git do przechowywania i udostępniania zmian między komputerami, a XMPP do komunikowania zmian.
git-annex - narzędzie wiersza poleceń do przetaczania plików, oparte na git. Oto przykładowy przewodnik: http://git-annex.branchable.com/walkthrough/
Tonido - darmowy. Udostępnia aplikację komputerową, która będzie udostępniać pliki innym urządzeniom. Zapewnij również komercyjne oferty chmurowe oraz komputer z wtyczką TonidoPlug.
BitTorrent Sync (darmowy) - synchronizacja plików peer-to-peer oparta na BitTorrent. Nie wiem zbyt wiele na ten temat, ponieważ nie będę go używać, ponieważ nie jest open source i nie ufam, że moje dane będą przechowywane w mojej sieci LAN, możesz edytować tę odpowiedź z lepszymi informacjami / prawdziwymi doświadczeniami.
SyncThing - opracowany jako otwarta alternatywa dla BitTorrent Sync. Obecnie brakuje niektórych zaawansowanych funkcji BitTorrent Sync, takich jak niezaufani peer. Jest w trakcie aktywnego rozwoju.
Komercyjne usługi hostowane, takie jak Dropbox, Ubuntu One, dysk Google, Apple iCloud są szybkie i tanie, ale wszystkie wymagają zaufania do firmy z wszystkimi Twoimi danymi i potrzebują dość szybkiego połączenia z Internetem.
Git / subversion - użyj bezpośrednio systemu kontroli źródła. Całkowicie ręczny i może być nieco złożonym, ale popularnym podejściem dla niektórych użytkowników zaznajomionych z tymi systemami z wykorzystaniem ich jako narzędzi programistycznych.
CloudFS - synchronizacja całego systemu plików w oparciu o technologię klastrową
Montaż NFS - w zasadzie Twój dom mieszka na jednej maszynie i masz do niego dostęp przez sieć, nie jest to dobre dla laptopów, które zabierasz ze sobą. Więcej informacji: http://www.linuxjournal.com/article/4880
Czynniki, które należy wziąć pod uwagę przy podejmowaniu decyzji:
Serwer centralny - niektóre rozwiązania wymagają, aby komputer był cały czas włączony (lub przynajmniej w przypadku konieczności synchronizacji), aby inne maszyny mogły się z nim synchronizować. Może to być jedna z istniejących maszyn lub osobna maszyna, na przykład NAS. Uważaj na wyższe rachunki za prąd.
Automatyczny / ręczny / zaplanowany - najlepszym sposobem na uniknięcie konieczności rozwiązywania konfliktów, gdy coś jest zmieniane na więcej niż maszynie, jest posiadanie programu na każdym komputerze, który obserwuje zmiany i natychmiast synchronizuje, w ten sposób zmniejszasz możliwość uzyskania wielu wersje. W przypadku procesów ręcznych zawsze musisz pamiętać o uruchomieniu synchronizacji.
Zdalny dostęp - czy chcesz synchronizować z dala od sieci LAN (zwanej także domem), zastanów się nad konsekwencjami tego bezpieczeństwa.
Bezpieczeństwo - czy dane pozostawiają sieć zaszyfrowaną, czy nie, jak bezpieczny jest transfer między komputerami. Co się stanie, jeśli ktoś zarejestruje Twoje dane w ruchu, a później okaże się, że szyfrowanie ma wady? Kto kontroluje serwer, który przechowuje twoje dane, czy dane są szyfrowane, czy możesz zaufać stronom trzecim? Czy musisz dziurawić otwory w routerze, aby uzyskać zdalny dostęp? Jak długo trwają „usunięte” pliki i powiązane metadane na zsynchronizowanych urządzeniach i na centralnym serwerze. Czy synchronizujesz między pamięcią szyfrowaną a nieszyfrowaną?
Przenoszenie dużych folderów - w rozwiązaniach, które wypróbowałem, występuje problem polegający na tym, że po przeniesieniu / zmianie nazwy pliku lub folderu synchronizacja nie rozumie tego i przesyła je od nowa jako nowe, a następnie usuwa starą kopię. Proszę o pomoc, zaznaczając powyższe rozwiązania, które są w stanie sobie z tym poradzić (podejrzewam, że rozwiązania oparte na git robią, ponieważ git nie cierpi z tego powodu z powodu adresowania opartego na treści, którego używa, ale nie wiem na pewno, ponieważ nie mam pojęcia ich używałam).
Pojemność dysku
Kopie zapasowe - synchronizacja nie jest kopią zapasową. Usuń ważny plik przez pomyłkę, a wiele z powyższych wesoło usunie wszystkie pozostałe kopie. Polecam przeczytać artykuł Mata Honana o tym, jak zostałeś zhakowany, aby uzyskać dobry opis tego, co może się stać, jeśli włożysz wszystkie swoje cyfrowe jajka do jednego cyfrowego koszyka, że tak powiem.
Nie zalecamy synchronizację cały folder domowy, ale zamiast zbierając określone foldery do synchronizacji, takich jak
Documents/
,Pictures/
itd. Pozwoli to na uniknięcie bólu zmuszany do czynienia z problematyką przestrzeni prędkość / wydajność / dysk automatycznego synchronizowania wszystko. Pozwala to również uniknąć konieczności utrzymywania list wykluczeń.Gdy będę nadal starać się znaleźć coś, co będzie dla mnie osobiście, postaram się aktualizować tę odpowiedź z przydatnymi informacjami. Zebrałem informacje ze wszystkich pozostałych odpowiedzi w jedną pełną odpowiedź.
Bibliografia:
hacking / all /
źródło
Unison może być dobrym kandydatem:
Już wykonuje synchronizację dwukierunkową. Zobacz aktualizację poniżej.
Dowiedziałem się, że jest niewiele rzeczy, których rsync nie może zrobić i prawdopodobnie może to zapewnić równe lub lepsze rozwiązanie, ale będziesz musiał poczekać na pojawienie się eksperta rsync dla tego rozwiązania.
Aktualizacja: Tak, Unison może synchronizować więcej niż 2 maszyny. Z instrukcji obsługi :
źródło
Co powiesz na umieszczenie plików w systemie kontroli wersji, takim jak SubVersion lub git?
Nie zmieniam całego mojego domowego katalogu, ale tylko kilka subdirów z ważnymi rzeczami. Ale myślę o przejściu na git, ponieważ wydaje się, że jest lepiej dla tego rodzaju pracy. ( szybkie wyszukiwanie skieruje Cię we właściwym kierunku ).
Powodzenia
Aktualizacja : Przyjemnym efektem ubocznym z git jest to, że łatwo jest mieć pliki specyficzne dla komputera, ponieważ wystarczy mieć gałąź dla tego komputera (i w git dostajesz to domyślnie). Więc nie musisz mieć dokładnie takich samych plików na całym komputerze, muszą one być podobne i mieć wspólną „główną” gałąź z rzeczami, które chcesz na wszystkich różnych komputerach.
źródło
Głównym problemem podczas próby wykonania tego jest podjęcie decyzji o sposobie scalania zmian, propagowania usuwania i rozwiązywania konfliktów. Jest to trudne do zrobienia w całkowicie zautomatyzowany sposób, szczególnie jeśli masz konfigurację z 3 komputerami, z której korzysta wiele osób.
Jeśli oddzielisz użytkowników, wszystko stanie się znacznie prostsze. Ponieważ jeden użytkownik nie może znajdować się w dwóch miejscach jednocześnie (a zatem generować konflikty), możesz skonfigurować zadanie rsync, aby uruchamiało się przy logowaniu w celu „uzyskania zmian” i wylogowaniu się w celu „wypchnięcia zmian” ... na jeden z komputerów, na których byłby mistrzem ... więc na tym poziomie szczegółowości synchronizowałbyś / home / myuser za każdym razem, a nie cały / home /. Dodatkowym udoskonaleniem (w przypadku osób, które się nie wylogowują) byłoby uruchomienie skryptu wypychania po krótkim okresie bezczynności.
Istnieje wiele innych potencjalnych rozwiązań, ale o ile mi wiadomo, żadne magicznie nie rozwiązują tego problemu. Pierwszym krokiem jest prawdopodobnie zastanowienie się nad tym, jak korzystasz z komputerów i wymyślenie zasad synchronizacji dopasowanych do zachowania użytkownika.
źródło
Myślę, że możesz osiągnąć to, co chcesz lepiej, instalując wspólny folder domowy w systemie plików NFS. Sprawdź ten artykuł http://www.linuxjournal.com/article/4880
źródło
Nie zapewni to całkowicie rozwiązania, ale da ci początek:
Co jakiś czas konfiguruj zadanie crona, aby zsynchronizować pliki. Używam polecenia takiego jak poniżej:
Spowoduje to użycie rsync do skopiowania tylko potrzebnych zmian, a nie do skopiowania wszystkiego za każdym razem, gdy polecenie zostanie uruchomione.
--stats i --progress są opcjonalne i prawdopodobnie powinny zostać wyłączone ze skryptów
zawartość mojego pliku rsync_backup_excludes.conf to:
źródło
Sprawdź lsyncd
źródło
Spójrz na dropbox http://www.getdropbox.com/ Wiele platform Win / Linux / Mac
źródło
Zamontuj
/home
z jednego komputera na dwóch pozostałych. Automount działa do tego całkiem dobrze.źródło
Ubuntu One może być tym, czego szukasz. Niestety, wciąż jest w fazie beta i nie mam z tym doświadczenia, więc nie jestem pewien, czy to zadziała.
źródło
Jeśli chcesz również zsynchronizować konfiguracje - narzędzia wymienione powyżej są całkowicie bezradne: konfiguracje są często zmieniane, a wiele plików dziennika powoduje konflikty, więc nie można ich scalić.
Moje oszustwo jest proste i głupie :) Mam stację roboczą Master, a wszystkie pliki z „~” są właśnie kopiowane do drugiego „Slave”. W chwili, gdy zdaję sobie sprawę, że muszę coś zmodyfikować - robię to na Master, a Slave synchronizuje te zmiany.
Ponadto niektóre skrypty bash powinny działać inaczej na tych komputerach, dlatego edytowałem /etc/bash.bashrc:
Teraz skrypty wiedzą, któremu hostowi służą;)
źródło
Spróbuj dvcs-autosync .
Jest to oparte na git, używa XMPP do powiadamiania podłączonych klientów o zmianach plików i reaguje na zdarzenia zmiany plików poprzez zmiany i-węzła. Dlatego zawsze jest informowany zaraz po zmianie pliku, w przypadku konfliktu opiera się na sprawdzonych metodach git.
Używam go od jakiegoś czasu jako zamiennika Dropbox za pomocą kluczy publicznych SSH i to naprawdę działa.
źródło
PowerFolder - Synchronizuj pliki, synchronizuj foldery, zdalne przechowywanie, kopie zapasowe i prywatne udostępnianie plików. Synchronizuj komputer w domu i biurze, udostępniaj zdjęcia z wakacji lub pracuj razem nad dokumentami. Bezpieczna technologia peer-to-peer PowerFolder działa w Internecie lub w sieci LAN.
źródło
Obejścia, które rozważę:
Dropbox.
Główne wady: nie jest za darmo dla żadnej rozsądnej ilości danych. W przeciwnym razie działa bezbłędnie IMHO
Serwer NAS. Umieść swoje pliki na serwerze NAS, stały się ostatnio niedrogie (od około 150 $), a dobry nie zużywa dużo energii. Nigdy nie wystąpiły problemy z synchronizacją.
Główna wada: wolniejsza niż kopia lokalna
źródło
Używam SyncTwoFolders dla komputerów Mac i Syncback na PC - pierwszy dla moich trzech komputerów Mac w domu (w tym laptopa), a drugi dla mojego komputera w pracy. Oba programy mają różne opcje tworzenia kopii zapasowych i synchronizacji, dzięki czemu jest to pestka po skonfigurowaniu ustawień wstępnych. Bułka z masłem! Jestem pewien, że istnieją inne wersje podobnego oprogramowania dla systemów Linux i Ubuntu.
źródło
Możesz użyć skryptu synchronizacji, takiego jak osync, który może propagować usunięte pliki i aktualizować tylko te zmodyfikowane. http://www.netpower.fr/osync osync jest oparty na rsync, ale może obsłużyć wiele scenariuszy synchronizacji między folderami lokalnymi lub zdalnymi przez ssh.
źródło