Clonezilla - sprawniejsze wykonywanie kopii bezpieczeństwa
Wstęp
Jest wiele dobrych aplikacji uruchamianych w trybie USB Live do robienia pełnych kopii zapasowych partycji (offline) lub całych dysków. Jedną z tych bardziej kompleksowych i zupełnie darmowych jest Clonezilla.Osoby, które miały z tą aplikacją do czynienia mogły dojść do wniosku, że nawet tak prosta czynność jak wskazanie partycji źródłowej i miejsca docelowego dla obrazu partycji jest dosyć czasochłonna w stosunku do aplikacji, gdzie "wyklikujemy wszystko". Powodów takiego stanu rzeczy jest kilka m. in. konieczność wyboru języka, układu klawiatury, trybu pracy (początkujący/zaawansowany), wskazania rodzaju operacji do wykonania, zamontowania partycji lub zdalnej lokalizacji na kopię, wprowadzenia nazwy katalogu kopii i potwierdzania wielu pomniejszych rzeczy. Zaczyna być to uciążliwe szczególnie w momencie jeżeli wykonujemy kopię zapasową tych samych partycji częściej i z tymi samymi opcjami.
Istnieją dużo mniej złożone alternatywy np. Rescuezilla, problem jednak zaczyna się, gdy chcemy pogodzić wysoką funkcjonalność z szybkością wykonywania kopii zapasowych. Na szczęście jest na to sposób, aby bez przebudowy "filesystem.squashfs" dodać odpowiednie wpisy do menu startowego GRUB Clonezilli, które spowodują o wiele szybsze rozpoczęcie przygotowywania kopii konkretnych partycji, bez "przebijania się" za każdym razem przez te same opcje.
Przygotowanie bootowalnego pendrive z Clonezillą.
(UEFI - GPT)
- Pobieramy paczkę ZIP z Clonezillą: alternative stable (Ubuntu-based)
- Zmieniamy system plików na pendrive na FAT32 i go formatujemy (szybkie formatowanie)
- Upewniamy się, że schemat partycji na pendrive jest GPT, a nie MBR. W tym celu wciskamy Ctrl+R i wpisujemy „diskpart”, a następnie „list disk”. Na liście dysków znajdujemy naszego pendrive i sprawdzamy, czy tam gdzie jest kolumna GPT ma znak „gwiazdki - * ”. Jeżeli nie to konwersji na GPT możemy dokonać w menadżerze dysków Windows (diskmgmt.msc). Niektóre implementacje UEFI będą jeszcze wymagać, aby partycja była aktywna, to również możemy zmienić w menadżerze dysków Windows.
- Rozpakowujemy pobrany plik ZIP bezpośrednio na swojego pendrive.
Jeżeli wszystko wykonaliśmy poprawnie Clonezillę będzie można uruchomić np. z poziomu menu szybkiego bootownia naszego UEFI wybierając nasz pendrive z listy.
Przygotowanie skryptu BASH w celu automatyzacji procesu kopii zapasowej
UWAGA! Skrypt jest przykładowy i każdy powinien dostosować go do własnych potrzeb i rozkładu partycji w swoim komputerze.
Szczegóły dostępnych opcji znajdziecie tutaj: https://gist.github.com/gotbletu/630478ddf5b4e6ad6abd1a8b23918830 (Goo...
Clonezilla po interaktywnym etapie konfiguracji pokazuje wszystkie parametry, które wcześniej wybraliśmy. (w rezultacie pełne polecenie) Możemy w ten sposób spisać je sobie i zaoszczędzić czasu na sprawdzaniu jakich parametrów używaliśmy przy ręcznym robieniu kopii zapasowych.
Przykładowy pacjent:
- DYSK PIERWSZY - Windows (/dev/sda): /dev/sda1 - System EFI (partycja ESP od Windows) /dev/sda2 - Microsoft - zarezerwowana /dev/sda3 - Microsoft - dane podstawowe (partycja C:) /dev/sda4 - Środowisko odtworzeniowe Windows
- DYSK DRUGI - Linux (/dev/sdb): /dev/sdb1 - System EFI (partycja ESP od Linux) /dev/sdb2 - Linux - system plików (partycja ROOT od Linux)
- DYSK TRZECI - obrazy kopii zapasowych (/dev/sdc): /dev/sdc1 - Linux - system plików (partycja na KOPIE ZAPASOWE)
Przejdźmy do napisania prostego skryptu, który będzie uruchamiany przez GRUBA w celu wywołania „ocs-sr” z odpowiednimi parametrami potrzebnymi do wykonania kopii zapasowej:
1. Sprawdzamy, czy skrypt jest wykonywany jako ROOT - przydatne jeżeli chcielibyśmy go wywołać wprost z poziomu shella.
#!/bin/bash if [[ $(id -u) -ne 0 ]] ; then echo "Uruchom jako root!" ; exit 1 ; fi
2. Tworzymy instrukcję "case", która sprawdza parametr wywołania z poziomu menu GRUB uruchamiając tworzenie kopii Linux lub Windows.
opt=$1 case $opt in linux) mount -t auto /dev/sdc1 /home/partimag && /usr/sbin/ocs-sr --ocsroot "/home/partimag/LIN_KOPIA" -q2 -batch -gs -sc -z1p -i 1000000 -sfsck -senc -p choose saveparts $(date "+%Y-%m-%d")-LIN_ARCH-img sdb1 sdb2 && sudo umount /dev/sdc1 ;;
3. Montujemy najpierw partycję na której będziemy chcieli składować obraz, w tym przypadku jest to "/dev/sdc1". Ścieżkę punktu montowania tej partycji "/home/partimag" zostawiamy bez zmian, ponieważ jest ona domyślna. Następnie wywołujemy "ocs-sr" Clonezilli z parametrem "-‑ocsroot", który oznacza katalog, gdzie ma być składowany obraz, w tym przypadku jest to ścieżka "/home/partimag/LIN_KOPIA".
- Użyta lista parametrów, wyjaśnienie: -q2 - użycie 'partclone' do wykonania kopii (kolejność partclone>partimage>dd) -batch - brak konieczności potwierdzania poprzez "y", opcja odwrotna do opcji "-c" -gs - generowanie sumy kontrolnej SHA1 obrazu - NA KOMPUTERACH ZE SŁABYM PROCESOREM NALEŻY TEJ OPCJI UNIKAĆ!! (wydłuża znacznie proces tworzenia kopii, zależnie od wielkości obrazu) -sc - włącza pominięcie sprawdzania, czy obraz jest przywracalny (można ją usunąć, ale wydłuża to prawie dwukrotnie proces tworzenia kopii) -z1p - równoległa kompresja obrazu do formatu GZIP -i 1000000 - parametr OPCJONALNY podawany w megabajtach, powoduje dzielenie obrazu na mniejsze pliki po przekroczeniu zdefiniowanej wielkości pliku (jeżeli obraz jest mniejszy niż wartość podana tutaj, to ten parametr nie wpływa na nic) -sfsck - pomija sprawdzanie błędów partycji przez fsck (tylko systemy plików unixowe) przed zapisaniem kopii -senc - pomija szyfrowanie pliku/-ów kopii partycji -p - po zrobieniu kopii zapasowej włącza menu wyboru: wyłącz, uruchom ponownie...
Po "saveparts" można podać nazwę podkatalogu w którym będzie utworzony obraz, tutaj jest to aktualna data w formacie "rok-miesiąc-dzień-LIN_ARCH-img" Jeżeli zmieniasz nazwę na inną to musi być przynajmniej jeden zmienny składnik nazwy - tutaj jest nim data, bo w przeciwnym razie nowy obraz nadpisze starszy. Po nazwie wyszczególnione są partycje źródłowe, których kopia ma być wykonany. Przykładowo: sdb1 sdb2 Na końcu następuje odmonowanie partycji na której była tworzona kopia. Poniżej analogicznie, ale dla Windows:
windows) mount -t auto /dev/sdc1 /home/partimag && /usr/sbin/ocs-sr --ocsroot "/home/partimag/WIN10_KOPIA" -q2 -batch -gs -sc -z1p -i 1000000 -sfsck -senc -p choose saveparts $(date "+%Y-%m-%d")-WIN10-img sda1 sda2 sda3 sda4 && sudo umount /dev/sdc1 ;; *) exit 0 ;; esac
Skrypt zapisujemy sobie jako np. "backup.sh" i kopiujemy bezpośrednio na pendrive.
- Możesz go pobrać w całości tutaj z poprawnym formatowaniem.
UWAGA! Pamiętaj, aby podmienić przynajmniej partycje źródłowe i docelową według swojego układu partycji!! Nie odpowiadam za bezmyślne przekopiowanie skryptu i ewentualną utratę danych.
Dodanie wpisów menu GRUB w pliku "grub.cfg"
Jest to ostatni etap modyfikacji, po którym będziemy mogli szybko wykonywać pełne kopie partycji do pliku/-ów obrazu.
Na pendrive przechodzimy kolejno do katalogu "boot", potem "grub". Otwieramy plik "grub.cfg" w np. notatniku.
Odszukujemy wpis "Clonezilla live (Default settings, VGA 800x600)" i poniżej klamry zamykającej "}" wklejamy:
menuentry "Clonezilla live - KOPIA ROOT LINUX" { search -‑set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user hostname=focal config quiet components noswap edd=on nomodeset enforcing=0 locales="pl_PL.UTF-8" keyboard-layouts=NONE ocs_live_run="sudo bash /run/live/medium/backup.sh linux" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img }
menuentry "Clonezilla live - KOPIA WINDOWS 10" { search -‑set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user hostname=focal config quiet components noswap edd=on nomodeset enforcing=0 locales="pl_PL.UTF-8" keyboard-layouts=NONE ocs_live_run="sudo bash /run/live/medium/backup.sh windows" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img }
menuentry "Clonezilla live - KOPIA ROOT LINUX I WINDOWS 10" { search -‑set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user hostname=focal config quiet components noswap edd=on nomodeset enforcing=0 locales="pl_PL.UTF-8" keyboard-layouts=NONE ocs_live_run="sudo bash /run/live/medium/backup.sh linux && sudo bash /run/live/medium/backup.sh windows" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img }
Następnie zapisujemy zmiany i gotowe. Od teraz w menu GRUB Clonezilli będzie dostępna możliwość wykonywania kopii bez konieczności interakcji.
Powyższe wpisy "menuentry" zostały stworzone na bazie domyślnego, czyli "Clonezilla live (Default settings, VGA 800x600)" dla wersji Clonezilli opartej o Ubuntu.
To co zostało zmodyfikowane to:
- usunięte "--id live-default" z innych niż pierwszy domyślny "menuentry"
- uzupełnione "locales=" o "pl_PL.UTF-8", aby nie pytało o język Clonezilli
- uzupełnione "keyboard-layouts=NONE", aby nie pytało o układ klawiatury (zostawia domyślny)
- zmienione "ocs_live_run=", aby uruchamiało skrypt backup.sh z parametrem "linux" lub "windows", albo oba, jedno po drugim.
Opcjonalnie można dodać parametry "ocs_prerun", "ocs_prerun2" itd. z poleceniem podmontowania jakiś lokalizacji zdalnych np. w celu przechowywania obrazu partycji.
Nie należy wklejać powyższych "menuentry" jeżeli pojawiła się nowa wersja Clonezilli od momentu utworzenia tego poradnika, lecz utworzyć własne w oparciu o powyższą listę elementów zmodyfikowanych.
Mam nadzieję, że tworzenie pełnych kopii offline opisywaną aplikacją stanie się dzięki temu wpisowi znacznie szybsze i wygodniejsze. ;)