Czy istnieje działające rozwiązanie do tworzenia kopii zapasowych systemu Linux, które wykorzystuje inotify?

17

Tworzenie kopii zapasowej trwa wieczność. Zanim będziemy mogli zaufać btrfs lub ZFS do tworzenia kopii zapasowych przyrostowych migawek, czy nie byłoby miło, gdyby istniał demon, który używał inotify do śledzenia, które pliki rzeczywiście się zmieniły, aby kopie zapasowe działały szybciej? Gdzie jest ten program?

Jak wykonać kopię zapasową mojego Linux-a bez konieczności przeszukiwania całego systemu plików za każdym razem? Chciałbym, aby program, który wykrywa nowe lub zmienione zdjęcia, kod źródłowy itp. I umieszcza je w kolejce, zostanie skopiowany na mój serwer NAS.

współpracownik
źródło
Tak naprawdę nie podałeś tutaj zbyt wielu informacji, szczególnie dotyczących tego, czego obecnie używasz do tworzenia kopii zapasowych, jakiego rodzaju danych. Istnieje kilka programów do tworzenia kopii zapasowych, które używają dzienników do śledzenia zmian w systemie plików, a następnie odnoszą się do tego dziennika podczas tworzenia kopii zapasowej. Co dokładnie chcesz wykonać kopię zapasową, na jakim urządzeniu / aplikacji, jaki jest charakter danych i jaka jest twoja obecna metoda tworzenia kopii zapasowej?
WerkkreW
@WerkkreW, nie sądzę, że to, co próbuje wykonać kopię zapasową, jest tak ważne. Podejrzewam, że wszystko, co pozwala na tworzenie kopii zapasowych na podstawie zdarzeń, byłoby interesujące. Żądanie nie jest niczym niezwykłym, OSX ma wehikuł czasu oparty na zdarzeniach.
Zoredache
Nadal uważam, że pytanie wymaga nieco więcej wyjaśnień, zanim będzie można na nie odpowiedzieć.
WerkkreW
1
@Zoredache, oczywiście to, co tworzę, jest ważne! Gdyby to nie było ważne ... och, czekaj ;-) Chcę wykonać kopię zapasową mojego katalogu domowego bez posiadania bezużytecznej maszyny przez n godzin, które zajęłoby rsync zaindeksowaniu całej rzeczy, gdy jedyną nowością jest zestaw zdjęć mojego nowo narodzonego dziecka.
stolarz
3
Pytanie wydaje mi się całkowicie jasne: kopia zapasowa Time Machine w Mac OS X jest szybka, ponieważ monitoruje zdarzenia awaryjne, dzięki czemu wie, gdzie szukać, kiedy wykonuje kopię zapasową. Linux ma funkcję inotify, podobną do funkcji zapobiegających awariom, a jednak rozwiązania do tworzenia kopii zapasowych systemu Linux, które próbują przybliżyć maszynę czasu (np. Dirvish), są żałośnie powolne, ponieważ nie wykorzystują funkcji inotify. Czy są jakieś, które to robią?
bendin

Odpowiedzi:

11

Odpowiedziałem na moje pytanie „yum search inotify”. Nazywa się lsyncd i jest hostowany w kodzie Google.

Niestety wygląda na to, że zawsze najpierw uruchamia pełną pełną synchronizację, więc nadal nie pomogłoby mi, gdyby mój komputer nie był włączony dłużej niż 14 godzin.

Lsyncd używa rsync do synchronizacji lokalnych katalogów ze zdalną maszyną z uruchomionym rsyncd. Lsyncd obserwuje inotify wielu drzew katalogów. Pierwszym krokiem po dodaniu zegarków jest zsynchronizowanie wszystkich katalogów ze zdalnym hostem, a następnie zsynchronizowanie pojedynczego pliku poprzez zebranie zdarzeń inotify. Tak więc lsyncd to lekkie rozwiązanie z lustrem na żywo, które powinno być łatwe do zainstalowania i używania, jednocześnie dobrze komponując się z systemem. Zobacz lsyncd --help, aby uzyskać szczegółowe opcje wiersza poleceń.

współpracownik
źródło
To interesujące łącze, myślałem nawet o jego wdrożeniu. Ale dlaczego na stronie jest napisane, że będzie przesyłać duże pliki dla każdej zmiany? Myślałem, że sam rsync już tego uniknie?
Hanno Fietz
rsync wciąż musi ponownie odczytać cały plik na obu końcach, aby przenieść go tak skutecznie, jak to możliwe. Dokumentacja lsyncd ma na celu stwierdzenie, że może to nie być skuteczne w przypadku dużych plików. W przypadku dużych plików bardziej odpowiedni byłby schemat replikacji na poziomie bloku.
joeforker,
3

Istnieje nowy system o nazwie, fsnotifyktóry ma na celu usunięcie braków, inotifyktóre zostały wprowadzone w celu rozwiązania problemów dnotify. fsnotifypozwala oglądać cały system plików bez większego zamieszania. Mamy nadzieję, fsnotifyże pomoże rozwiązać wszystkie nasze przyszłe problemy z tworzeniem kopii zapasowych systemu Linux.

współpracownik
źródło
2

Możesz zhakować coś za pomocą incron .

 / path1 IN_CLOSE_WRITE rsync -au $ @ / $ # backuphhost: / path

Hayalci
źródło
incron nie może rekursywnie oglądać katalogów
joeforker
no cóż! wydawało się to bardzo przydatne: -S
hayalci
2

Na podstawie badań (nie testowania) wydaje się, że inotify nie może obsłużyć bardzo dużej liczby plików w większości systemów i / lub robi to bardzo wolno. Wątek pod adresem http://www.pubbs.net/kernel/200905/109416/ był najbardziej przydatny. Wskazał na nową funkcję linux, która wydaje się być w kierunku mainline, fsnotify, czyli linux 2.6.31 i później.

użytkownik26055
źródło
2

Lsyncd synchronizuje całe obserwowane drzewo podczas uruchamiania, ponieważ w 99% przypadków jest to rozsądne. Chcesz katalog na hoście docelowym, który masz na hoście lokalnym, w przeciwnym razie synchronizacja może się nie powieść i chcesz zsynchronizować rzeczy pominięte podczas wyłączania. Jeśli jednak wiesz, co robisz, możesz wyłączyć synchronizację uruchamiania, po prostu ustaw synchronizację {..., startup = false} w pliku konfiguracyjnym Lsyncd.

jeśli chodzi o inotify, to nie liczba plików, ale liczba katalogów, które pochłaniają zasoby. Jeden katalog to jeden zegarek, niezależnie od liczby zawartych w nim plików.

Fanotify budowanie na fsnotify, podobnie jak inotify, wyglądało bardzo obiecująco dla osób oglądających mnóstwo katalogów, ale obecnie w Linuksie 2.6.37 fanotify w ogóle nie zgłasza zdarzeń zmiany nazwy (przenoszenia), co czyni go niezdatnym do użycia dla takiej pracy :-(

axkibe
źródło
Nawet jako usunięcie, po którym następuje tworzenie?
stolarz
1
nie w moich testach, nope :-( fanotify został zaprojektowany z myślą o tarczy antywirusowej, a IMHO jest teraz dostosowane dokładnie do minimum, którego wymaga.
axkibe
1

Spędziłem 6 miesięcy, szukając najlepszego rozwiązania do wykonania tego, co próbujesz zrobić; wydajne tworzenie kopii zapasowych na NAS. Po początkowej synchronizacji wszystko inne jest gładkie jak masło. Najnowsza wersja Lsyncd działa całkiem dobrze. Udokumentowałem to, co zrobiłem w linku poniżej. Po prostu zastąp wartości folderów. Mam nadzieję że to pomoże:

https://docs.google.com/document/d/1XpqM5h5YMwuQqzdknyDDnjcQVYGjAsyAxfYprqSnhd0/edit

Bobo
źródło