Obraz systemu z uruchomionym systemem Debian?

22

Czy jest możliwe wykonanie kopii zapasowej działającego systemu Debian do jakiegoś pliku obrazu, który można po prostu zapisać z powrotem na inny dysk twardy przy użyciu dd w przypadku awarii oryginalnego (zapasowego) systemu Debian?

Szczególnie szukam narzędzia bezpośrednio dostępnego w repozytoriach, ponieważ mam Debian Wheezy działający na raspberry pi i dlatego potrzebuję wsparcia dla architektury ARM, która jest dość niezawodna dla pakietów repozytoriów Debiana.

stefan.at.wpf
źródło
2
Nie polecałbym próby uzyskania kopii blok po bloku z systemu plików zamontowanego w rw. Najmniejszy zapis może go uszkodzić i uważasz, że masz wykonalną kopię zapasową. Więc mount -o remount,ronapędu kopiowania jeśli zdecydują się na dd, dumplub podobny. Kopiowanie z użyciem systemu plików za pomocą rsyncdowolnej innej metody, w tym systemu, cpjest bezpieczne dla systemu na żywo.
WhimsicalWombat

Odpowiedzi:

15

ddjest dobry, jeśli nie masz nic przeciwko generowaniu pliku obrazu, który ma dokładnie rozmiar Twojego surowego dysku. rsyncjest dobry, jeśli chcesz mieć łatwy dostęp na poziomie plików. Ale standardowym sposobem tworzenia kopii zapasowej systemu plików jest dumpi restore( aptitude install dump).

Dla urządzenia takiego jak Raspberry Pi, wykonałbym kopię zapasową w następujący sposób, zakładając, że tablica partycji MS-DOS i dysk to / dev / sda:

  • dd if=/dev/sda of=sda-boot-sectors.img count=2048 aby uzyskać obraz sekcji rozruchowej dysku.
  • fdisk -lu /dev/sda >sda-partition-table.txt do późniejszego odniesienia do człowieka.
  • dump -0af sda1-root-level0.dump /dev/sda1 i powtórz dla każdej partycji, dla której chcesz utworzyć kopię zapasową.

Następnie możesz skompresować partię i zostawić ją w bezpiecznym miejscu. Aby przywrócić, należy ddprzywrócić tablicę partycji i sektory rozruchowe, ponownie załadować tablicę partycji, utworzyć nowy system (systemy) plików i użyć cd /mnt/new-filesystem; restore -rf /some-location/sda1-root-level0.dump.

Plusy:

  • dump pobiera pełną kopię systemu plików, w tym listy ACL, rozszerzone atrybuty, własność, rzadkie pliki, specjalne atrybuty systemu plików - wszystko jest zrzucane bez zmian.
  • Skopiuje tylko potrzebne bloki, ignorując nieużywane.
  • To standardowe narzędzie uniksowe i czytelne dla wielu innych narzędzi unixowych.

Wady:

  • wygeneruje uszkodzone migawki, jeśli system plików zostanie zapisany podczas zrzutu
  • trudniej jest zamontować obraz kopii zapasowej (co można zrobić z obrazami dysku) lub dostać się do poszczególnych plików (które można uzyskać dzięki rsynckopiom zapasowym).
  • Jest to specyficzne dla systemu plików. Możesz zrzucić system ext3plików i przywrócić go w ext4jednym, ale możesz zrzucić dowolny typ systemu plików. Większość dojrzałych systemów plików ma swoje własne dumpwersje. Standardowy Debian to dumprobi ext2, ext3i ext4. Jeśli używasz systemu plików specyficznego dla Flasha, twoje opcje mogą być inne.
Alexios
źródło
Na stronie podręcznika nie podano, dumpże system plików nie powinien być zapisywany. To brzmi jak rozsądne ograniczenie, ale szkoda, że ​​nie wspomniano o tym na stronie podręcznika, aby ktoś mógł popełnić ten błąd ...
imz - Ivan Zakharyaschev 24.09.15
Dzięki Twojemu wpisowi dowiedziałem się o tym narzędziu (zrzut / przywracanie). mkfs.ext4 /dev/sda1; mount /dev/sda1 /mnt/disk; cd /mnt/disk; dump -0af - /dev/sda5 | restore -rf -
Użyję
5

Użyj dddla sektora rozruchowego i rsync -aHSdla plików. Musisz wykluczyć „wirtualne” systemy plików, takie jak / proc / sys i wszelkie dyski RAM (tmpfs).

Jeśli chcesz również zachować partycjonowanie, możesz to zrzucić sfdisklub odtworzyć za pomocą parted.

Nils
źródło
Dzięki, brzmi bardzo interesująco, czy zdążyłeś już to zdenerwować? Jak utworzyć pełny obraz z tych części, wystarczy użyć urządzenia loopkack? (Tak, chcę dalej partycjonować itd. Chcę, aby obraz był gotowy do zapisania na nowej karcie SD / dysku bez zbędnego manipulowania)
stefan.at.wpf
@ stefan.at.wpf Właśnie pomieszałem niektóre z moich rozwiązań do klonowania maszyn wirtualnych, tworząc fizyczne serwery (autoyast / kistart) tworząc raid1-mirror z systemu bez dublowania i zwykły sposób replikacji (statycznych) części system plików dla węzłów klastra. Nie używam tego myselv. Moją metodą byłoby automatyczne zainstalowanie nowego serwera (w tym klienta kopii zapasowej), a następnie przywrócenie za pomocą kopii zapasowej zawartości starego serwera na nowym serwerze.
Nils
4

W przypadku Debiana tak naprawdę wystarczy wykonać kopię zapasową danych i plików konfiguracyjnych .

Aby wykonać kopię zapasową istniejącego stanu:

  • Utwórz kopię zapasową wybranych pakietów za pomocą dpkg --get-selections > dpkg_selections.
  • Utwórz kopię zapasową bazy danych debconf za pomocą sudo debconf-get-selections > debconf_selections.

Aby zastosować to do nowego systemu:

  • Najpierw zastosuj wybory debconf za pomocą sudo debconf-set-selections < debconf_selections.
  • Zastosuj wybrane pakiety za pomocą dpkg --set-selections < dpkg_selections.
  • Zainstaluj pakiety za pomocą apt-get dselect-upgrade.

Twoje dane powinny być przede wszystkim /homei /var(na przykład /var/lib/mysqldla MySQL, /var/wwwApache, etc.). Powinieneś być w stanie dowiedzieć się, które aplikacje są dla Ciebie ważne.

Konfiguracja będzie przede wszystkim w /etc. Znów nie powinno być trudno wybrać to, co jest dla Ciebie ważne.

bahamat
źródło
Aby debconf-get-selectionuruchomićapt-get install debconf-utils
panditą
1

Nie wiem, czy dobrze to zrobić, gdy system jest uruchomiony, ale to właśnie robię.

sudo dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M

jak powiedziałem, być może istnieje lepsze rozwiązanie, w takim przypadku chciałbym je również poznać!

emil
źródło
1

Próbowałem tyle oprogramowania do tworzenia kopii zapasowych i przywracania i nigdy nie byłem szczęśliwy. Oto co teraz robię: mam drugi Debian zainstalowany na zapasowym komputerze (ten sam MB, karta NIC itp.). Każdego wieczoru synchronizuję z komputerem A na komputer B. Są pewne pliki, które wstrzymuję (/ etc / network / interfaces, / etc / hosts, / etc / hostname), ponieważ nie chcę konfliktów między dwoma uruchomionymi systemami. Właściwie mam ich kopie w innym folderze. Wyłączam także niektóre usługi, których nie muszę uruchamiać na komputerze B (postfix, mysql itp.). Mam skrypt napisany na komputerze B, który w zasadzie zamieni go w komputer A (zastąpi pliki, które wstrzymałem), uruchomi ponownie kartę sieciową i włączy usługi, które zostały wyłączone. Oczywiście, maszyna A musi być wyłączona, kiedy uruchamiam skrypt, bo w przeciwnym razie nastąpi spustoszenie. Testuję maszynę B co miesiąc, wyłączając maszynę A, uruchamiając skrypt, i przeprowadzanie testów, aby upewnić się, że jest aktualne i działa poprawnie. To działa jak urok!

Joseph Vernice
źródło
0

Sprawdź Clonezilla. Widzę to na liście w standardowych repozytoriach Debiana. http://clonezilla.org/

Edycja: Prawdopodobnie nie, wymagania listy Clonezilla na pierwszej stronie: „Procesor X86 lub x86-64”

Tim
źródło
Ciekawy projekt, i tak dziękuję :-)
stefan.at.wpf
0

Aby wykonać kopię zapasową mojego pi, wyjmuję kartę microSD i podłączam ją do laptopa. Następnie uruchom a, ddaby utworzyć plik na moim laptopie na całym dysku, jak wyżej:

dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M
Kok
źródło
2
To dosłownie ignoruje najważniejszą część pytania. Pytanie brzmi: jak wykonać obraz systemu na żywo , a zanim przeniesiesz dyski, lepiej zamknij system.
Syreny
0

Użyj przywracania systemu. Mam go działającego nawet przy debian stretch. Daje ci ładną pamięć rozruchową na żywo z dokładnie skonfigurowanym pulpitem.

Piotr
źródło