Chcemy wykonać kopię zapasową wszystkiego na naszym serwerze Debian, który działa zdalnie po drugiej stronie świata (hostowany przez Linode), bez wyłączania go.
W tym systemie działa powłoka, poczta e-mail, XMPP / prosody i sieć, z kilkoma prostymi ustawieniami nginx.
Chcemy tworzyć kopie zapasowe plików związanych z tymi rzeczami, aby były bezpieczne. Na przykład pliki przechowywane przez użytkowników w katalogach domowych.
Nie musimy dokładnie kopiować istniejącego pliku wrt każdego pliku / etc; zamiast tego powodem, dla którego nawet wykonujemy kopię zapasową, jest przeniesienie jej do nowej konfiguracji (nowsza wersja Debiana wciąż na Linode).
Widzę, że Linode oferuje usługę tworzenia kopii zapasowych. Ale w dłuższej perspektywie potrzebujemy również własnych kopii zapasowych, na wypadek, gdyby uległy one awarii lub wydarzy się coś dziwnego.
Powodem tego pytania jest to, że kiedy próbowałem tworzyć kopie zapasowe w przeszłości, popełniłem jeden z tych dwóch błędów:
- Poszedłem „OK, po prostu skopiuję
/
i wszystko pod nim”, a następnie utknąłem w jakiejś dziwnej nieskończonej pętli albo z powodu napędu, na który kopiowałem, został zamontowany pod / media / backup i kopiował się rekurencyjnie [obv ten konkretny problem nie dotyczy tutaj, ponieważ będziemy tworzyć kopie zapasowe na rsync lub podobnym] lub utknął, próbując skopiować niektóre „żywe” rzeczy do / proc lub / var lub cokolwiek innego, na przykład próbując nadążać za ciągle zmieniającymi się logami, lub - Poszedłem: „OK, po prostu wezmę absolutne minimum tego, czego potrzebujemy… hmm, katalogi domowe wszystkich i nasze katalogi serwerów sieciowych (wszystkie poniżej
/var
), a następnie przejrzyjmy kopię/etc
wszystkich starych wiadomości w / var / vmail ”, a potem niezmiennie spieprzyłem uprawnienia do plików lub znaczniki czasu (upewnię się, że tym razem nie utworzę kopii zapasowej plików unixowych na dysku FAT) lub o czymś zapomniałem („ o, strzelaj, miałem kilka niestandardowych skryptów w / usr / local / bin, którego nigdzie indziej nie zapisałem, zapomniałem je zdobyć, zgadnij, że już ich nie ma ”).
Tak więc obv kopiowanie całego dysku prosto prowadzi do pułapek, a selektywne kopiowanie katalogów prowadzi do pułapek. Chcę wiedzieć, jak to zrobić dobrze.
Pytanie o awarię serwera Czego potrzeba do pełnego systemu tworzenia kopii zapasowych? obejmuje filozofię i dobre praktyki, ale szukam tych bardziej szczegółowych szczegółów:
- Które katalogi muszę skopiować, a które wykluczyć (biorąc pod uwagę, że jest to system, który obecnie działa i obsługuje wiki, czat XMPP, e-mail - z nowymi wiadomościami przychodzącymi podczas pracy kopiowania)
- Jakie atrybuty pliku, takie jak znaczniki czasu oraz właściciel i grupa, muszę przedstawić i jak to zrobić? ← Myślę, że sam mogę odpowiedzieć na tę połowę pytania, na przykład… hmm…
rsync -HXaz
Myślę, że to dla nas dobra opcja?-z
Obv naprawdę nie wiąże się z pytaniem, które jest „co mam zachować”
Wiele porad dotyczących tworzenia kopii zapasowych, które widzę, na przykład za pomocą dd
, wydaje się zakładać, że dysk jest odmontowany i nie jest używany. Ale ja nie powinien wykluczać „żywe” jak katalogi / proc, a niektóre z podkatalogów w / var (Jednak niektóre rzeczy z katalogu / var wiem na pewno zrobić potrzebę utrzymania) i / zamontować? O czym jeszcze muszę pomyśleć w tej sytuacji? Później chyba po prostu mogę zrobić to za pomocą rsync i użyć kilku --exclude
flag.
Czy są lepsze pomysły, szczególnie przyjazne dla FOSS?
cp -r -a
że zachowuje jak najwięcej atrybutów plików podczas kopiowania plików (w oparciu o obsługę docelowego systemu plików).-a
Flag nakazujecp
zachować atrybuty. Kopiowanie przez sieć lub system plików, który nie obsługuje wymaganych atrybutów,tar -c
zawsze działało dla mnie, chociaż uważam, że istnieją pewne przypadki brzegowe, których nie obejmuje, a w szczególnościtar
domyślnie zależą od dopasowania nazw użytkowników na oba systemy. To powiedziawszy, skopiowałem cały (odmontowany) system Linuxtar
bez żadnych widocznych problemów.Odpowiedzi:
Chcesz więc wykonać kopię zapasową całego dysku bez tych wszystkich nieprzyjemnych błędów, a także odfiltrować wszystkie foldery / proc i inne foldery tymczasowe?
Opcją jest zamontowanie folderu głównego w innym folderze w systemie plików, na przykład:
To da ci wszystkie pliki na twoim dysku, które nie są uważane za tymczasowe (jak foldery / proc lub / sys).
Teraz, gdy masz czysty widok swojego folderu głównego, możesz po prostu skopiować go na dysk zapasowy przy użyciu standardowego
cp
lubrsync
. Coś w stylu:To rozwiązuje oba wymienione problemy:
Zobacz też: man mount (8)
źródło
W Linuksie wszystko jest plikiem. Jest to możliwe przez rsync, ale są rzeczy, o których należy pamiętać, które (w najlepszym razie) trudno jest obejść.
Najpierw powinieneś pomyśleć o replikacji, szczególnie w przypadku baz danych. Jest to również dobry pomysł, aby skonfigurować serwer proxy / moduł równoważenia obciążenia przed serwerem podstawowym, aby podczas przełączania można było łatwo przełączać się między serwerami głównymi i serwerami kopii lustrzanych.
Na poziomie sprzętowym najlepszą sytuacją będzie posiadanie serwera lustrzanego po drugiej stronie, z taką samą liczbą portów Ethernet, takim samym układem dysku twardego i tak dalej. Wszystko, co się różni, implikuje potrzebę zmian konfiguracji systemu.
tzn. jeśli masz dwa porty eth, chcesz się upewnić, że konfiguracja sieci, zapora sieciowa itp. są zgodne z nazwą interfejsu na obu serwerach, a jeśli jest inna, musisz zmienić konfigurację po rsync lub zmienić nazwę urządzenia na drugim (docelowy) serwer.
To samo z układem partycji. Powinieneś utworzyć te same partycje, co na głównym serwerze, ale jeśli utworzysz je od zera, otrzymasz różne UUID, więc będziesz musiał zmienić fstab, grub, mdadm (jeśli dotyczy soft-raid) itd. .
Ale istnieje również wiele rzeczy, które mogą pójść nie tak, jak bazy danych, które mogą być niespójne, jeśli nie zostały wcześniej zatrzymane (przed wykonaniem rsync).
Najlepszą strategią będzie najpierw przygotowanie sprzętu i systemu plików (partycji) - w celu dopasowania do konfiguracji głównego serwera. Następnie zamontuj puste parytony za pośrednictwem systemu pośredniczącego (np. Live CD z tymczasowo zainstalowanym serwerem ssh). Tworzysz puste / proc, / dev, / sys, a następnie zsynchronizujesz resztę w następujący sposób:
Następnie musisz zainstalować GRUB na urządzeniu i pracować nad konfiguracją, aby można go było uruchomić, zmienić konfigurację sieci, fstab i inne rzeczy wspomniane wcześniej.
Możesz także spróbować zainstalować nowy system (z tą samą wersją, której używasz na głównym serwerze), a następnie wyłączyć go, zamontować za pomocą innego tymczasowego systemu (np. Live cd), a następnie zastąpić cokolwiek innego niż / proc, / sys, / dev i / boot with rsync.
Ale to tylko ogólny pomysł. Sprawy mogą się komplikować w zależności od tego, co faktycznie masz na tym serwerze, jaka jest twoja konfiguracja, konfiguracja sieci i sprzętu. A pod koniec dnia może to być naprawdę trudne lub niemożliwe do zrobienia bez zauważalnego przestoju.
źródło
kill -9
bezpieczeństwa bazy danych , w przeciwnym razie jej odzyskanie może się nie powieść. Dobra baza danych powinna poradzić sobie z tą sytuacją, ale zaskakująca liczba produktów nie (lub gorzej, prawie zawsze odzyskują, ale zawodzą raz na niebieskim księżycu, gdy naprawdę potrzebujesz ich do działania). W praktyce replikacja i tak jest prawdopodobnie bardziej niezawodna.To, czego tak naprawdę chcesz, to przywraca. Cokolwiek robisz, musisz regularnie je przywracać.
Linode ma usługę tworzenia kopii zapasowych. Migawki można wykonywać według ograniczonego z góry określonego harmonogramu lub za pomocą interfejsu API.
Zaletą kopii zapasowych opartych na migawkach jest to, że oferują one bardzo krótki czas, ponieważ dane nie zmieniają się podczas tworzenia kopii. Migawki można również łatwo przywrócić na innym hoście, w tym przypadku nowym Linode.
źródło
Używam BackupPC do mojego małego wirtualnego prywatnego serwera, to działa dość dobrze. BackupPC może używać rsync pod maską i obsługuje pełne i przyrostowe kopie zapasowe. Spójrz na to i sprawdź, czy spełni twoje wymagania.
źródło
Uruchom swój system na ZFS. Następnie możesz zrobić natychmiastową, atomową migawkę, używając czegoś podobnego do:
gdzie
tank
jest jakakolwiek jest twoja pula ZFS. Ta migawka gwarantuje natychmiastową migawkę systemu plików i wszystkich jego potomnych systemów plików.Po utworzeniu migawki możesz przenieść ją na inny host przy użyciu
zfs send
issh
.źródło
Moim zdaniem Zależy to od tego, gdzie i gdzie działasz serwer z wewnętrznym poleceniem linux, nie jest to możliwe, musisz naśladować / potokować kompletne dane i biblioteki. Jeśli działasz na vmware i dobrze skonfigurowałeś, zapewnia on migrację na żywo. W przeciwnym razie musisz użyć narzędzi innych firm. Mam nadzieję, że to ci pomoże. Więcej referencji Jak wykonać kopię zapasową serwera na żywo?
Rsync to dobra komenda do synchronizacji danych między serwerami.
źródło
Dostępne są 2 rozwiązania, w których nie musisz (więcej) polegać na brakujących bitach, a także na pominięciu jednego elementu z listy z powodu niekompletnej listy kontrolnej, a może po prostu z powodu przeoczenia czegoś gorącego.
Po pierwsze, jeśli przeniesiesz to na platformę z większą kontrolą nad platformą sprzętową, możesz wykonać migawki dysku wszystkich plików, gdy serwer jest uruchomiony. Na przykład w AWS możesz wykonać migawkę dysku EBS, a nawet zapłacić za różnice tylko wtedy, gdy wykonasz kolejną migawkę później.
Po drugie, zalecam skryptowanie konfiguracji całego serwera za pomocą systemu zarządzania konfiguracją, takiego jak Ansible. To będzie
dokumentuj wszystko, co skonfigurowałeś w kontroli źródła
pozwalają na przetestowanie odtworzenia serwera z kopii zapasowej lub bez systemu operacyjnego, aby upewnić się, że skrypty są aktualne
pozwalają ponownie uruchomić skrypt w nowszym systemie operacyjnym, zwykle z niewielkimi zmianami.
źródło