Używam Virtual Box do testowania dystrybucji / aplikacji.
Jedną z funkcji, które po prostu uwielbiam, są migawki maszyn wirtualnych, która zapisuje stan maszyny wirtualnej i jest w stanie przywrócić ją do dawnej świetności, jeśli coś poszło nie tak bez problemów i bez zajmowania całego miejsca na dysku twardym.
W moich systemach na żywo wiem, jak utworzyć obraz systemu plików 1: 1, ale wszystkie znane mi rozwiązania stworzą nowy obraz całego systemu plików.
Czy są jakieś programy / systemy plików, które są w stanie wykonać migawkę bieżącego systemu plików, zapisać go w innej lokalizacji, ale zamiast tworzyć kompletny nowy obraz, tworzy przyrostowe kopie zapasowe?
Aby łatwo opisać to, czego chcę, powinny to być dd
obrazy systemu plików, ale zamiast pełnej kopii zapasowej tworzyłby również przyrostowe.
Nie szukam clonezilli itp. Powinien on działać w samym systemie bez interwencji użytkownika (lub prawie bez interwencji), ale powinien zawierać wszystkie dane z systemów plików. Nie szukam też duplicity
kopii zapasowej całego systemu z wyjątkiem skryptu folderów +, dd
aby zapisać swój mbr. Mogę to zrobić sam, szukając dodatkowej finezji.
Szukam czegoś, co mogę zrobić przed dokonaniem ogromnych zmian w systemie, a następnie, jeśli coś się nie powiedzie lub spalę dysk twardy po rozlaniu kawy, mogę po prostu uruchomić komputer z płyty CD i przywrócić działającą migawkę na dysk twardy.
To nie musi być codzienne, nie potrzebuje nawet harmonogramu. Po prostu uruchamiaj od czasu do czasu i pozwól mu działać, najlepiej w oparciu o RAW, a nie na podstawie kopii pliku.
źródło
Odpowiedzi:
Aby wyjaśnić odpowiedź cprofitta (ponieważ jego odpowiedź jest przyrostowa, jak wyjaśnię) ...
Najpierw musisz wiedzieć o twardych linkach.
Dowiązania twarde wskazują dane, które faktycznie znajdują się na dysku (fizyczna lokalizacja), a dostęp do danych można uzyskać za pomocą łącza twardego. Każdy plik i katalog stanowi stałe łącze do lokalizacji danych na dysku fizycznym. Dlatego jeśli dwa pliki (twarde linki) wskazują tę samą lokalizację, dane są przechowywane tylko raz .
Proces podany przez cprofitt obejmuje:
Obróć kopie zapasowe, aby utworzyć miejsce na nowe. („Dzisiejsza kopia zapasowa” z wczoraj zmienia się na „Wczorajsza kopia zapasowa”, „Wczorajsza kopia zapasowa” sprzed dwóch dni staje się „Kopia zapasowa dwa dni temu” itd.)
Skopiuj najnowszą migawkę (np. „Wczorajsza kopia zapasowa”) w miejsce nowej (np. „Dzisiejsza kopia zapasowa”), tworząc nowe twarde łącza do istniejących plików bez kopiowania pliku. Tak więc wszystkie pliki w nowej migawce wskazują tę samą lokalizację, co poprzednia .
Ilustrowany przykład
Na poniższym obrazku pliki tego samego koloru, które mają tę samą nazwę, stanowią twarde łącza do tego samego pliku na dysku. Mamy tutaj do czynienia z dwoma migawkami i kilkoma plikami, ale przykład jest skalowany. (Z wyjątkiem tego, że przenoszę migawki w odwrotny sposób niż skrypty w odpowiedzi cproffit)
Proces jest następujący:
Jest migawka systemu.
Migawka to kopie (tworzenie twardych linków do istniejących plików)
Rsync jest uruchamiany w celu aktualizacji migawki. Po zmianie plików nowy plik jest zapisywany jako nowa kopia na dysku twardym (więc starsza migawka nie jest zmieniana). W tym przykładzie plik B został zmieniony. Uwaga: mamy teraz tylko 1 kopię pliku A i pliku C oraz dwie kopie pliku B zapisane na dysku twardym
Obróć migawki (w tym przypadku migawka 0 „spada” i jest usuwana, a ja zmieniam nazwę migawki 1 na migawkę 0)
Skopiuj migawkę ponownie (powtórz krok 2)
Znowu Rsync. (Powtórz krok 3). Teraz mamy 1 kopię pliku A i 2 kopie pliku B i pliku C.
Uproszczona wersja skryptu [pierwszego] (nie do uruchomienia, podobnie jak odskocznia) jest następująca:
Teraz pełny skrypt (y) ma tutaj pełne wyjaśnienie (jako związane z cprofitt) i jest bardziej dokładny, ale jest zasadniczo jak wyżej. Drugi skrypt służy do grupowania migawek, a druga część odpowiedzi cprofitt mówi o automatycznym procesie (przy użyciu crona) i sprawdzeniu, czy tworzenie kopii zapasowej się powiodło.
Możesz zmienić nazwy, więc zamiast katalogów nazywanych „godzinnymi ...” są one nazywane czymś innym, a skrypt jest uruchamiany ręcznie.
Aby przywrócić całą partię, skopiuj najnowszą migawkę (lub poprzednią) z powrotem do katalogu, w którym robiłeś kopie zapasowe.
Aby przywrócić pojedynczy plik, który nadal znajduje się w migawce, przejdź do migawki i skopiuj go z powrotem do miejsca, do którego należy.
Nośnikiem kopii zapasowej może być zewnętrzny dysk twardy (musi to być ext2 / ext3 / ext4). Gdybyś tworzenia kopii zapasowych
/
(głównie/boot
,/home
,/etc
/root
i/usr
), a następnie, powiedzmy ...Montujesz dysk zewnętrzny, wykonujesz kopię zapasową i tworzysz najnowszą migawkę.
Odmontuj dysk.
Pamiętaj, że usunąłeś plik (nawet z kosza), który chciałeś.
Podłącz dysk zewnętrzny i pobierz plik.
Wykonaj kopię zapasową (dla pewności)
Odłącz dysk i podróżuj ...
Uświadom sobie, że laptop i lawa nie mieszają się.
Na nowym laptopie z uruchomioną płytą CD sformatuj dysk wewnętrzny, zamontuj dysk zewnętrzny, a następnie
cp -a /media/external/snapshot-0/* /media/internal-drive
(zakładając, że migawka-0 jest najnowszą migawką)Zainstaluj gruba w MBR (tak, musi być osobno) - lub użyj go
dd
do wykonania kopii zapasowej MBR, jak powiedział cprofitt na dole swojej odpowiedzi.Restart.
Skrypt musi zostać dopracowany (aby uzyskać tylko to, czego potrzebujesz), a procedura zakłada, że nie masz
/home
partycji. Jeśli utworzysz (lub miałeś) utworzyć nowy na dysku i zamontujesz gomount /dev/sdxy /media/external/home
przed kopiowaniem.źródło
100 x <average size of snapshot>
miejsca na dysku. 100 z nich będzie kosztować<size of snapshot> + <size of changed files>
. Użyłem tego do umieszczenia kilku migawek / home (~ 400 GB) na dysku 500 GB.cp -al
tworzy twarde linki do plików źródłowych zamiast kopiować pliki źródłowe. Twoje liczby powinny również to odzwierciedlać, np. Pokazując, że pliki A na rysunku 2 są tym samym plikiem.Możesz użyć rsync.
i drugi:
Po utworzeniu skryptu do swoich potrzeb dodaj go do zadań crona.
dodaj następujące:
Powodują, że make_snapshot.sh jest uruchamiany co cztery godziny w ciągu godziny i daily_snapshot_rotate.sh jest uruchamiany codziennie o 13:00 (czyli 13:00).
źródło: http://www.mikerubel.org/computers/rsync_snapshots/
Jeśli chcesz, aby działał co godzinę, dodawałeś zadanie cron dla każdej godziny.
Inną możliwą opcją jest użycie rsnapshot
Zainstaluj rsnapshot (dostępny w centrum oprogramowania)
Skonfiguruj rsnapshot i Określ kopię zapasową katalogu źródłowego
Otwórz plik /etc/rsnapshot.conf i usuń komentarz z następujących wierszy.
Zdefiniuj docelowe katalogi kopii zapasowych w /etc/rsnapshot.conf, jak pokazano poniżej. W tym przykładzie
/ home - katalog źródłowy, dla którego należy utworzyć kopię zapasową localhost / - katalog docelowy, w którym będzie przechowywana kopia zapasowa. Pamiętaj, że ten katalog zostanie utworzony w katalogu /.snapshots/{internal.n}/, jak pokazano w ostatnim kroku.
nano /etc/rsnapshot.conf
backup / home / localhost /
Przetestuj konfigurację rsnapshot
Wykonaj test konfiguracji, aby upewnić się, że rsnapshot jest poprawnie skonfigurowany i gotowy do wykonania kopii zapasowej rsync linuksa.
Możesz tworzyć kopie zapasowe katalogów lub plików systemu Linux w różnych odstępach czasu. Domyślnie konfigurowane są godzinowe i dzienne kopie zapasowe.
Sprawdź konfigurację kopii zapasowej co godzinę.
Sprawdź, czy codzienny proces tworzenia kopii zapasowej rsnapshot cwrsync jest poprawnie skonfigurowany.
Po sprawdzeniu, że konfiguracje godzinowej i dziennej kopii zapasowej rsync są poprawnie skonfigurowane w narzędziu rsnapshot cwrsync, nadszedł czas, aby ustawić tego szczeniaka w crontab, jak pokazano poniżej.
źródło: http://www.thegeekstuff.com/2009/08/tutorial-backup-linux-using-rsnapshot-rsync-utility/
---- Odzyskiwanie nagiego metalu
Używałbym dd i tar do odzyskiwania systemu od zera.
Utwórz kopię zapasową ważnych metadanych:
Wykonaj kopię zapasową systemu operacyjnego:
Osobiście wolałbym wyłączać mój system z sieci, gdybym chciał utworzyć plik przywracania systemu od zera.
źródło
dd
nie jest przyrostowa. O to nie pytam. Ostatnie 10% może być interesujące, ale reszta zrzutu informacji tak naprawdę nie jest.Istnieją 2 sposoby tworzenia przyrostowej kopii zapasowej na podstawie bloków
Migawki oparte na systemie plików
Zarówno ZFS, jak i BTRFS zapewniają przyrostowe migawki oparte na blokach ( BTRFS , ZFS (strona 25) ). Możesz mieć dysk, do którego synchronizujesz rsync, czyli ZFS lub BTRFS i migawka.
Istnieją również migawki LVM (wspomniane przez cprofitt), które zapewniają te same przyrostowe migawki oparte na blokach.
Migawki programowe
Istnieje kilka programów do tworzenia kopii zapasowych , jednak kilka wystaje w tym celu:
Wiem, że specjalnie wspomniałeś, że nie szukasz czegoś takiego jak dwulicowość, ale pomyślałem, że mógłbym wspomnieć o niektórych funkcjach.
Jednak programy te wymagają instalacji w celu przywrócenia. Piękno czegoś takiego jak rsync polega na tym, że prawie każda instalacja linuxowa ma rsync (np. Brakuje go w małym rdzeniu (dystrybucja 10 MB)).
Dwulicowość
Po prostu przechowuje różnicę (poziom bloku), a następnie kompresuje je i szyfruje. Prowadzi to do jeszcze mniejszej ilości pamięci niż metoda rsync, jednak (przynajmniej tak to widzę) system plików będzie musiał zostać zrekonstruowany, co zajmie trochę czasu (jeśli korzystasz z przyrostowych kopii zapasowych i zależy to od czasu ostatnia pełna kopia zapasowa)
Strona podręcznika wyjaśnia jak to działa.
Rdiff-backup
Program klient-serwer, który tworzy, podobnie jak duplikat, różnice na poziomie bloku, jednak przechowuje zmiany od ostatniego punktu przywracania, więc najnowsza migawka jest najszybsza do przywrócenia. Cofanie się w czasie (nie ostatnia migawka) wymaga analizy większej liczby różnic, więc jest wolniejsze.
Niektórzy porównują rdiff-backup do rsnapshot (wydaje się to bardziej automatycznym sposobem mentod rsync). Prawie wszystkie instrukcje koncentrują się na korzystaniu z rdiff przez sieć, jednak znalazłem taki, który wspomina, jak to zrobić na localhost .
źródło
duplicity
właściwie jest.Powinieneś spojrzeć na ddar ( strona główna ).
Jest to przyrostowe w tym sensie, że nie przenosi identycznych części migawki. Nie jest on przyrostowy w klasycznym znaczeniu tego słowa, ponieważ dotyczy migawek.
Uwaga: sam tego nie próbowałem (ale ufam autorowi). Może nie zrobić tego, co chciałbyś osiągnąć od razu po wyjęciu z pudełka, ale na stronie jest więcej podobnych rozwiązań (np. ZFS ), więc na początek może się okazać przydatny.
źródło
Myślę, że możesz to zrobić z LVM, która jest jedyną teorią, i zmarnuje dużą ilość dysku twardego. Moja teoria jest taka, że możesz uzyskać system root żyjący na logicznym woluminie, a jeśli chcesz wykonać test, możesz utworzyć migawkę i ponownie uruchomić komputer przy użyciu nowego woluminu.
Migawki LVM wymagają oryginalnego woluminu do działania. Wynika to z faktu, że nowy wolumin zawiera różnicę między migawką a rzeczywistym systemem plików.
Jeśli pozostawisz system w tym stanie, zaczniesz marnować miejsce na dysku, gdy zmieni się nowy system plików. Nie wiem, czy istnieje sposób na konsolidację obrazu stanu i ostatecznego pliku. Z pewnością możesz przenieść dd na inny wolumin logiczny, ale do tego potrzebujesz dwa razy więcej miejsca w systemie plików oraz różnicy między „punktem odzyskiwania” a bieżącym stanem.
A wszystko to wymaga ponownego uruchomienia i daleki jest od automatyzacji.
Przypuszcza się również, że działa w ten sposób kilka nowoczesnych systemów plików, takich jak ZFS w systemach solaris lub eksperymentalne btrfs.
źródło
Ten jest trochę nad moją głową, ale wydaje się, że częścią tego, co chcesz zrobić, jest częściowe tworzenie kopii zapasowych plików binarnych (takich jak pliki obrazów partycji). Zaprojektowano do tego pakiet (właśnie o tym przeczytałem - nie wypróbowałem).
Spójrz na BUP.
https://github.com/apenwarr/bup
Może dać ci kilka pomysłów.
źródło