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.
Logo Clonezilla (źródło Wikipedia) 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.
Zmodyfikowane o nowe opcje menu GRUB od Clonezilli 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.
Pełne polecenie tuż po manualnej konfiguracji sporządzania kopii (przykład) 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. ;)
Clonezilla podczas procesu zapisu partycji do obrazu