Istotnym etapem pracy z każdym systemem jest regularne wykonywanie kopii zapasowej (BackUp) danych/systemu – tak by w każdej chwili w przypadku awarii móc wrócić do jak najbardziej aktualnego stanu sprzed usterki.

Z racji tego, że komputer Raspberry Pi jest wręcz stworzony do różnych „eksperymentów” tym bardziej istotna wydaje się możliwość powrotu do wcześniejszego (np. jeszcze działającego) stanu. I pomoże nam w tym regularna kopia zapasowa…

Raspberry Pi: Kopia zapasowa systemu

Kopię zapasową (BackUp) w Raspberry Pi zasadniczo można podzielić na dwa rodzaje/typy:

  • Kopia karty pamięci w zewnętrznym urządzeniu (np. czytnik)
  • Kopia partycji/karty z poziomu Pi

Wersja z wykorzystaniem zewnętrznego urządzenia jest zazwyczaj szybsza, niż ta wykonywana bezpośrednio z Pi, ale wymaga wyłączenia na kilka(naście) minut systemu.

Pewnie w większości przypadków nie jest to problemem, to jednak ja preferuje rozwiązania automatyczne (np. za pomocą CRONa), dzięki temu mamy pewność, że kopia wykonywana jest regularnie.

Kopia karty pamięci w zewnętrznym urządzeniu (czytnik kart pamięci)

Jest to zdecydowanie szybszy sposób, choć w przeciwieństwie do drugiej z opisywanych metod (poniżej) wymaga wyłączenia na czas wykonywania kopii zapasowej Pi i wyjęcia karty pamięci.

Z racji tego, że na co dzień jako komputera głównego używam systemu Windows – opisane programy będą przeznaczone na ten system, choć korzystając z innych programów na innych systemach będzie się to odbywało analogicznie…

Win32 Disk Imager

Program ten był już opisywany przy okazji wgrywania systemu (obrazu systemu) na kartę pamięci, tylko tym razem należy odwrócić kolejność wykonywania czynności (najpierw kopia/BackUp, później przywracanie systemu):

raspberry-pi_w32di_read01

Tworzymy kopię zapasową:

  • Wkładamy kartę pamięci wyjętą z Raspberry Pi do czytnika
  • Uruchamiamy program Win32 Disk Imager
  • Wybieramy lokalizację do zapisania pliku z kopią karty
  • Klikamy „Read”

Cała operacja trwa od kilku do kilkunastu minut, zależnie o szybkości i pojemności karty…

Przywracamy z kopii zapasowej

  • Wkładamy kartę pamięci wyjętą z Raspberry Pi do czytnika
  • Uruchamiamy program Win32 Disk Imager
  • Wybieramy zapisany plik z kopią karty
  • Klikamy „Write”

Cała operacja również w tym wypadku trwa od kilku do kilkunastu minut, zależnie o szybkości i pojemności karty…

HDD Raw Copy Tool

Ten program również był już opisywany, choćby przy okazji wgrywania obrazu systemu dla Raspberry Pi na kartę pamięci.

Tworzenie kopii zapasowej karty

Po uruchomieniu programu w którym mamy listę znalezionych w systemie dysków, oraz możliwość skorzystania z pliku (obrazu):

raspberry-pi_hdd-raw-copy-tool_01

Z racji tego, że tworzymy kopię zapasową (BackUp) wybieramy właściwa kartę pamięci/czytnik i klikamy „Continue >>>”

W następnym oknie korzystamy z opcji:

  • [FILE] Double-click to open file

i wybieramy lokalizację gdzie chcemy zapisać plik z kopią zapasową:

raspberry-pi_hdd-raw-copy-tool_03

Tu też widać pewną zaletę tego programu nad opisanym wcześniej, tj. możliwość zapisania obrazu karty od razu w formie skompresowanej (*.imgc), co pozwala zaoszczędzić ok 5-6GB w przypadku karty o pojemności 16GB (choć wiele zależy od ilości danych na karcie pamięci).

W ostatnim oknie klikamy „Start” by rozpocząć tworzenie kopii zapasowej:

raspberry-pi_hdd-raw-copy-tool_04

Również w tym przypadku cała operacja trwa od kilku do kilkunastu minut, zależnie od wielkości i szybkości karty pamięci…

Przywracanie z kopii zapasowej

Cała operacja wygląda prawie identycznie, z tym, że w pierwszy kroku wybieramy plik kopii zapasowej, a w drugim – kartę pamięci/czytnik kart pamięci…

Pamiętajcie, by przed wyjęciem karty prawidłowo wyłączyć system/Pi:

sudo shutdown -h now

Kopia partycji/karty z poziomu Pi

Możemy też wykonać kopię zapasową bezpośrednio z poziomu Raspberry Pi, korzystając np. z polecenia (programu) „dd”.

Tworzenie kopii zapasowej systemu

Kopię (obraz) systemu robimy za pomocą np. takiego polecenia:

sudo dd bs=2M if=/dev/mmcblk0 of=/mnt/dysk_docelowy/20121214.img

Możemy też zrobić kopię konkretnej partycji:

sudo dd bs=2M if=/dev/mmcblk0p1 of=/mnt/dysk_docelowy/20121214_p1.img
sudo dd bs=2M if=/dev/mmcblk0p2 of=/mnt/dysk_docelowy/20121214_p2.img

Gdzie:

  • sudo – podniesienie uprawnień
  • if – źródło kopii
  • /dev/mmcblk0 – oznacza całą kartę pamięci, można też użyć:
  • /dev/mmcblk0p1 – dla partycji „boot”
  • /dev/mmcblk0p2 – dla partycji systemowej/głównej
  • of=/mnt/dysk_docelowy/20121214.img – katalog docelowy kopii, plik obrazu kopii

Listę partycji/dysków możecie sprawdzić np. takimi poleceniami:

cat /etc/fstab
sudo fdisk -l
df -h

Katalogiem docelowym może być np. zasób sieciowy, lub dysk/PenDrive podłączony do Raspberry Pi po USB:

raspberry-pi_ssh_lan-backup03

Jak widać – w tym wypadku katalogiem docelowym mógłby być podmontowany zasób (dysk) sieciowy znajdujący się na innym komputerze w sieci LAN.

Najpierw udostępniłem dla konkretnego użytkownika (w tym wypadku „patryk”) na komputerze (nie Pi) odpowiedni zasób, następnie już na Pi utworzyłem 2 katalogi:

sudo mkdir /mnt/pc01
sudo mkdir /mnt/pc01/patryk
  • pc01 – komputer 01 (w celach porządkowych)
  • pc01/patryk – katalog „patryk” który będzie odpowiadał zasobowi sieciowemu

Następnym krokiem jest zamontowanie udostępnionego zasobu lokalnie na Raspberry Pi „do utworzonego katalogi”:

sudo mount -t cifs -o username=patryk,password=test  //IP_komputera/patryk /mnt/pc01/patryk
  • Między „//IP_komputera/patryk” a  „/mnt/pc01/patryk” znajduje się spacja
  • Jeśli w nazwie zasobu występuje spacja, korzystamy z cudzysłowów, „//IP_komputera/patryk 2”

Polecenie wykonania kopii zapasowej całej karty będzie dla tego przykłady wyglądało tak:

sudo dd bs=2M if=/dev/mmcblk0 of=/mnt/pc01/patryk/nazwa_obrazu.img

Analogicznie będzie to wyglądało dla np. pamięci USB podłączonej do Pi, z tym że zmieni się katalog docelowy…

Na koniec można odmontować już „niepotrzebny” zasób:

sudo umount //IP_komputera/patryk

Przywracanie

Jak podpowiada logika wystarczy zamienić „źródło” z „katalogiem/plikiem docelowym”, czyli:

sudo dd bs=2M if=/mnt/pc01/patryk/nazwa_obrazu.img of=/dev/mmcblk0

To jednak nie do końca to może być takie proste… ;-)

Dlatego proponuje Wam do przywrócenia kopii zapasowej – zwłaszcza że wtedy Pi (system) może nie działać – skorzystanie z opisanych wyżej programów, które powinny bez problemu przenieść utworzony za pomocą „dd” plik obraz z powrotem na kartę pamięci.

Zobacz wszystkie artykuły z serii „Raspberry Pi”

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk