Twórz backupy! Nigdy nie wiesz, kiedy będziesz ich potrzebować.

Niedawno spotkała mnie bardzo nieprzyjemna sytuacja, a mianowicie software, który zainstalowałem jeszcze pod Windowsem 8 przed aktualizacją do Windowsa 8.1 uszkodził mi system. Partycja odzyskiwania stworzona przez system, punkty przywracania ani żadne narzędzie dołączone do instalatora nie pomogły. Męczyłem się cztery dni analizując szkody i działania programu, jednakże ostatecznie uratował mnie backup (kopia zapasowa) partycji systemowej, który wykonałem końcem grudnia zeszłego roku szczerze mówiąc bez żadnej racjonalnej przyczyny. W tym poście opiszę jak w prosty sposób tego dokonać.

Co konkretnie zrobimy i dlaczego to jest dobre rozwiązanie?

Pokażę, jak zrobić kopię zapasową partycji systemowej i jak ją przywrócić, choć równie dobrze w ten sposób można zbackupować cały dysk. Dla niewtajemniczonych: dysk (ten który znajduje się fizycznie w komputerze) dzieli się na tzw. partycje. W systemach z rodziny DOS/Windows osobna partycja najczęściej jest reprezentowana jako osobny „dysk lokalny” z własną literką w „Mój Komputer” tudzież „Komputer” w zależności od wersji systemu.
Wadą tego rozwiązania jest wielkość kopii zapasowej* i – dla osób niewtajemniczonych – trochę nieoczywiste działania z naszej strony.
Zalety? Mamy konsystentną kopię całej partycji systemowej! To oznacza, że po przywróceniu systemu dzięki tej kopii odzyskamy idealnie taki sam stan systemu! Nie będziemy musieli na nowo konfigurować systemu, personalizować własnego profilu czy instalować od nowa programów**.
* wprawdzie na partycję systemową nie trzeba wcale sporo miejsca, ale przeciętny użytkownik pewnie nie myśli jak sensownie podzielić dysk i wszystko umieszcza w tym jednym miejscu (co szczerze mówiąc wcale nie jest mądrym rozwiązaniem); poza tym zawsze backup można skompresować 🙂
** lokalizacja instalacji programu: partycja systemowa = program zostanie odzyskany, inna lokalizacja = przywracamy partycje systemową, czyli ta inna lokalizacja nie jest naruszona

Przygotowania

Oczywiście będziemy potrzebowali odpowiednio dużo wolnego miejsca na dowolnym nośniku (np. innej partycji, dysku czy pendrive’ie). Odpowiednio dużo, czyli tyle, jak wielką pojemność ma nasza partycja systemowa (tudzież wszystko to, co zamierzasz zbackupować).
Skoro zamierzamy wykonać konsystentną kopię partycji systemowej, nie możemy tego dokonać podczas działania systemu zainstalowanego na niej. Innymi słowy – potrzebujemy innego systemu, ale bez obaw – nie będziesz musiał go instalować. Wystarczy nam dowolna dystrybucja Linuxa z odpowiednimi narzędziami – my wykorzystamy Ubuntu (system jest darmowy, wystarczy wszystkie suwaki przesunąć na 0$ albo nacisnąć od razu odpowiedni link na dole strony). System należy przygotować do uruchomienia – wystarczy po prostu wypalić ściągnięty obraz systemu na płytę albo pendrive’a.
Ostatnią ważną kwestią jest pełne wyłączenie systemu. Nie powinien on być w stanie hibernacji lub uśpienia, bowiem po przywróceniu partycji mogą wystąpić problemy. Innymi słowy – po prostu używamy „Wyłącz komputer” zamiast „Hibernacja” / „Uśpij”. W przypadku Windowsa 8 i nowszych ważne jest, żeby wyłączyć także opcję szybkiego uruchamiania, bowiem działa ona na zasadzie częściowej hibernacji. Znajduje się on w opcjach zasilania.

Tryb szybkiego uruchamiania

Tryb szybkiego uruchamiania

Zaczynamy!

Bootowanie systemu

Na początku należy uruchomić Ubuntu. W tym celu włóż płytę do napędu, pendrive’a do portu USB albo podłącz do komputera inny nośnik, który posiadasz i wejdź do boot menu. Aby tego dokonać podczas włączania komputera naciskaj klawisz F12. Może to być wprawdzie inny klawisz, np. u mnie jest to F8, ale zazwyczaj spotyka się F12. Następnie w tym menu wybierz sposób bootowania (uruchomienia) systemu – czyli jeśli przykładowo wpiąłeś pendrive’a, powinieneś wybrać „USB HDD”.

Identyfikacja partycji / dysku

Zanim zaczniemy backupować partycję tudzież dysk, najpierw musimy się dowiedzieć, jak jest ona rozpoznawana przez system, z którego korzystamy. Można to osiągnąć w prosty sposób. Ubuntu uruchomione jako Live USB/CD/DVD/itp. jest dostarczone z narzędziem o nazwie GParted. Żeby je uruchomić naciśnij klawisz Super (u ciebie to zapewne klawisz z ikonką Windowsa albo Command na klawiaturze) lub naciśnij ikonkę Ubuntu w górnym lewym rogu ekranu, a następnie wpisz nazwę narzędzia, tj. GParted, w oknie, które się pojawi i uruchom to narzędzie. Zostało ono przedstawione na poniższym zrzucie ekranu w górnej prawej części ekranu:

Narzędzia: GParted, Nautilus (przeglądarka plików) oraz dd

Narzędzia: GParted, Nautilus (przeglądarka plików) oraz dd


Na wykresie zostały przedstawione partycje na moim dysku. Jak można zauważyć są one reprezentowane jako /dev/sda1, /dev/sda2 itd. Nietrudno się domyślić, która partycja zawiera u mnie Windowsa :). Natomiast cały dysk zawierający wszystkie partycje w systemie jest dostępny pod ścieżką /dev/sda (widoczne w górnej prawej części okna). Jeżeli backupujesz partycję systemową to proponuję równocześnie wykonać backup partycji z flagą msftres (u mnie oznaczona jako /dev/sda1), bowiem jest to partycji zarezerwowana przez system dla siebie oraz rozważyć również backup partycji odzyskiwania (ang. recovery).

Gdy już wybierzesz odpowiednie partycje / dyski do backupu to zalecam sprawdzić, czy na pewno system został w pełni wyłączony, a nie przykładowo zahibernowany. W tym celu po prostu otwórz przeglądarkę plików i po lewej pod etykietą Devices naciśnij na wszystkie partycje, które zamierzasz zbackupować. Jeśli wybrałeś cały dysk, to wykonaj te operacje wszystkich jego partycjach, które zawiera. Jeżeli ujrzysz swoje dane – wszystko jest w porządku. Jeśli otrzymasz błąd – przeczytaj opis. Prawdopodobnie nie wyłączyłeś w pełni systemu.

PS zapewne spostrzegłeś, że GParted nie pokazuje danych w jednostce GB (gigabajt), tylko GiB (gebibajt). Różnica polega na tym, że 1 GB = 1000 MB, a 1 GiB = 1024 MiB. Niemniej jednak powstało w tej kwestii trochę zamieszania i niektóre programy (np. Windows) korzystają z założenia, że 1 GB = 1024 MB. Stąd też pendrive 8 GB (8 mld bajtów) pod systemem Windows tak naprawdę „ma mniej GB”.

PPS uważaj na ukośniki w ścieżce! Muszą to być tzw. slashe, tj. dokładnie ten ukośnik /. Gdy użyjesz odwrotnego ukośnika, tj. napiszesz \dev\sda1, to system nie znajdzie pliku. Pisząc bardzo krótko – odwrotny ukośnik (ang. backslash) jest znakiem specjalnym i ma specyficzne znaczenie.

Backupowanie (tworzenie kopii zapasowej)

Przed samym kopiowaniem zaleca się tzw. odmontowanie partycji, które będziemy backupować. W tym celu w przeglądarce plików pod etykietą Devices po prostu naciśnij ikonkę „wysunięcia napędu” (trójkąt nad prostokątem). Jeśli owej ikonki nie ma – partycja nie jest zamontowana.
Kopiowanie wykonamy dzięki prostej komendzie w terminalu (te okienka z mnóstwem tekstu w środku). Zapewne istnieje wiele gotowych programów z nakładkami graficznymi, jednakże nie widzę sensu komplikowania sprawy poprzez nie i nie mam pewności czy takie oprogramowanie jest dostarczone wraz z Ubuntu. Uruchom terminal podobnie jak program GParted poprzez wyszukiwarkę. Po dokonaniu tego zobaczysz następujący tekst (widoczny na powyższym zrzucie ekranu):
ubuntu@ubuntu:~$
Nie będę objaśniał, co to oznacza, bowiem nie jest to teraz dla ciebie ważne. Potraktuj to jako informację dla Ciebie od terminala „czekam na polecenie”. Do kopiowania partycji wykorzystamy polecenie dd – dzięki niemu możemy po prostu przekopiować jeden plik. Jak to narzędzie nam się przyda? Ścieżka do partycji lub dysku to tak naprawdę ścieżka do pliku, który zawiera dane zapisane na tej partycji tudzież dysku. Innymi słowy – nasz dysk jest reprezentowany jako pojedynczy plik. Na moim przykładzie – plik o nazwie sda znajdujący się w katalogu /dev/. Uproszczona składnia polecenia, które wydamy jest następująca:
sudo dd bs=4M if=/dev/sda of=/media/ubuntu/moj_dysk/backup.img
Rozbijmy to na składowe:

  • sudo skrót od Super User DO, czyli po polsku „super użytkownik robi”. Dzięki temu wykonujemy polecenia z prawami administratora.
  • dd wywołanie programu dd
  • bs=4M bs, czyli Block Size (ang. rozmiar bloku). Skrótowo – dzięki temu szybciej przekopiujemy pliki.
  • if=/dev/sda if, czyli Input File (plik wejściowy). Po znaku równości podajemy ścieżkę do partycji lub dysku, który chcemy zbackupować. Jeśli mamy ich więcej – najpierw podaj jedną, a później osobno skopiuj kolejną partycję tudzież dysk. UWAGA! Z obu stron znaku równości nie może znajdować się spacja (ani inny żaden odstęp)!
  • of=/media/ubuntu/moj_dysk/backup.img of, czyli Ootput File (plik wyjściowy). Po znaku równości należy podać ścieżkę do pliku kopii zapasowej, który chcemy utworzyć, czyli do jeszcze nieistniejącego pliku.

Ścieżkę można wprowadzić na dwa sposoby – wpisać ręcznie albo przekopiować. W przypadku drugiej opcji wchodzimy do interesującego nas katalogu na wybranej partycji spod etykiety Devices w przeglądarce plików i naciskamy skrót Ctrl+L. Pasek w przeglądarce pliku powinien pokazać nam ścieżkę do aktualnego katalogu (widoczne na powyższym zrzucie ekranu). Możemy ją skopiować za pomocą skrótu Ctrl+C. Naciśnij teraz na okno terminala i za pomocą strzałek lewo oraz prawo (nie używaj strzałek góra i dół – one mają inne zadanie!) przesuń kursor na pierwsze pole za napisem „of=” i naciśnij Ctrl+Shift+V celem wklejenia tekstu do terminala (zwróć uwagę na shift! – standardowe znane ci skróty w terminalu są zarezerwowane dla innych celów). Na końcu dopisz nazwę pliku, do którego chcesz zapisać backup. Teraz zwróć uwagę na wszystkie spacje w ścieżce do pliku (tj. między pierwszym, a ostatnim znakiem we wprowadzonej ścieżce) i przed każdą pojedynczą spacją wprowadź pojedynczy backslash \ – w przeciwnym wypadku prawdopodobnie spowodujesz błąd składniowy polecenia i w rezultacie nic nie osiągniesz. Zwróć uwagę także na wielkość liter w ścieżce – Ubuntu je rozróżnia, więc katalogi „Dokumenty” i „dokumenty” to dwa różne katalogi, co może być powodem nie znalezienia szukanego pliku.

UWAGA! Przed zatwierdzeniem polecenia enterem upewnij się, czy podałeś prawidłowe ścieżki wybranych przez ciebie plików i czy nie pomyliłeś ścieżek „if” oraz „of”. Jeśli popełnisz błąd, MOŻESZ STRACIĆ DANE NA DYSKU. Jako autor tego tekstu nie ponoszę żadnej odpowiedzialności za błędy popełnione przez użytkowników.

Gdy już się upewnisz co do poprawności polecenia, zatwierdź je enterem. W tym momencie kursor (migający prostokąt) przeniesie się do drugiej linii i na ekran nie będzie nic wypisywane, nawet postęp. Dopiero, gdy kopiowanie się zakończy, zostanie wypisane podsumowanie wykonanej operacji i pokaże się z powrotem:
ubuntu@ubuntu:~$
Dopiero wtedy możemy wydawać kolejne polecenia. Jak jednakże sprawdzić postęp kopiowania, który został pokazany na zrzucie ekranu? To jest proste zadanie. Otwórz drugi terminal (pierwszego nie zamykaj dopóki kopiowanie się nie zakończy!) i wydaj polecenie:
pgrep '^dd$'
Na ekran powinna zostać wypisana jedna liczba. Wydajemy teraz drugie polecenie podstawiając wyświetloną przed chwilą liczbę za 1234:
sudo kill -USR1 1234
Po zatwierdzeniu komendy enterem w pierwszym terminalu powinien się wyświetlić postęp. Jeśli chcesz jeszcze raz wyświetlić postęp wystarczy, że wydasz tylko drugie polecenie (co zostało pokazane na zrzucie). Zamiast przepisywać polecenia wystarczy tylko w drugim terminalu nacisnąć strzałkę w górę – powinno to wyświetlić nam ostatnio wydane polecenie gotowe do zatwierdzenia enterem. UWAGA! Dla każdego aktualnie trwającego procesu kopiowania pierwsza komenda zwraca różne liczby – są to identyfikatory tych procesów. Innymi słowy – jeżeli będzie trwało kilka kopiowań przy pomocy polecenia dd – otrzymasz kilka liczb – po jednej dla każdego procesu. Natomiast gdy jeden proces się zakończy i wydasz drugie polecenie – drugi proces będzie miał swój nowy identyfikator.

Przeglądanie plików znajdujących się na kopii zapasowej

Wydajemy jedno proste polecenie:
sudo mount /sciezka/do/kopii_zapasowej.img /mnt
Oczywiście zamiast /sciezka/do/kopii_zapasowej.img wpisujesz ścieżkę do twojego backupu partycji (nie dysku!). Jeżeli otrzymasz błąd, to powinien być to ten sam błąd, co przed skopiowaniem oryginalnej partycji – prawdopodobnie nie wyłączyłeś w pełni komputera. Gdy ci się powiedzie (polecenie nic nie wypisze od siebie, tylko pojawi się „linia zachęty” do wprowadzenia nowej komendy), to otwórz przeglądarkę plików, naciśnij Ctrl+L i w pasku adresu wpisz /mnt zatwierdzając enterem. Twoim oczom powinna ukazać się wierna kopia twoich plików.

Montowanie obrazu dysku

Montowanie obrazu dysku

Przywracanie kopii zapasowej

Wykonujesz dokładnie te same kroki co przy wykonywaniu kopii zapasowej z jedną różnicą – zamieszasz „if=” na „of=”, a „of=” na „if=”. Innymi słowy – teraz plikiem wejściowym nie jest partycja, a nasza kopia zapasowa, a plikiem wyjściowym (do którego kopiujemy dane) jest właśnie nasza partycja. Proste, co? 🙂 W tym miejscu także proszę o uwagę – przywracając partycje z kopii zapasowej nie uzyskasz już dostępu do danych, które znajdowały się na przywracanej partycji przed procesem przywracania, bowiem zostaną one nadpisane przez dane z kopii zapasowej. Innymi słowy – skopiuj ważne dane w inne miejsce, skąd je później przeniesiesz z powrotem.

Mam nadzieję, iż komuś ten tutorial się przydał. Jeśli z niego skorzystałeś – śmiało możesz mnie poinformować o tym w komentarzu. Będę wtedy wiedział, że takie posty są użyteczne i jest sens pisać nowe. Btw tutorial wideo chyba byłby przystępniejszą wersją w tym konkretnym przypadku.
Co myślisz o poście? Śmiało daj znać w komentarzu! Pozdrawiam 🙂

5 myśli nt. „Twórz backupy! Nigdy nie wiesz, kiedy będziesz ich potrzebować.

  1. Przyczepię się do jednej rzeczy – tutorial napisałeś z perspektywy tego jednego problemu który Tobie się przytrafił, czyli uszkodzenia partycji systemowej.

    W praktyce, backupy najlepiej robić tak, żeby zadziałały w różnych sytuacjach – fizyczne uszkodzenie dysku, dysk szwankuje ze starości, zawirusowanie, etc.

    Czyli wprowadziłbym dwie zmiany:
    1. Backupy ZAWSZE robić na innym nośniku. Popularne rozwiązania to płyty CD/DVD do małych backupów, albo dyski zewnętrzne do dużych backupów. Innym rozwiązaniem jest dysk internetowy (np. Dropbox), który do backupowania małych ale bardzo ważnych plików (np. praca magisterska, projekt na studia albo w pracy) jest idealny, bo praktycznie daje gwarancję, że żadna awaria nam pliku nie usunie.

    2. Backupowanie partycji użytkownika jest IMHO zwykle ważniejsze od backupowania partycji systemowej. Stracę partycję systemową? Reinstalacja systemu rozwiąże problem, może nawet zajmie mniej czasu niż przywracanie backupu. Stracę swoje prywatne pliki? Ich już nie odzyskam, albo jest to bardzo trudne, jeśli dysk jest uszkodzony.

    Dodam jeszcze, że przy backupach często można trafić na problem – nośnik może mieć inny system plików, w przypadku pendrivów i dysków USB często jest to FAT32. System plików o tyle dobry, że i Windows i Linux go dobrze wspierają (Z ntfs’em spod Linuksa miałem kiedyś problemy. Było to lata temu, więc pewnie jest już lepiej.) W każdym razie na FAT32 nie umieścimy plików większych niż 4 GB. Można to obejść dzieląc plik na mniejsze, ja np. używam komend:

    tar cvf – origin | split –bytes=2G – backup.tar

    origin zastępujemy plikiem lub katalogiem do archiwizacji, a „backup” warto jak mówiłem umieścić na innym nośniku. Koniecznie dajemy mu rozszerzenie .tar, bo program split będzie nasze pliki nazywał taraa, tarab, tarac itd.
    Można zamiast cvf dać cvfz, wtedy przy okazji będzie pliki kompresować. Zwykle tego nie robię, bo większość backupowanych plików to albo pliki niewielkie, albo pliki już skompresowane (jpg, wideo), którym dalsza kompresja nie pomoże.

    Backup odtwarzamy komendą:

    cat backup.tar* | tar xvf –

    A i jeszcze jeden szczegół na koniec. Jak podajemy ścieżki ze spacjami, wygodniej IMHO po prostu otoczyć je „” niż dawać \ przed każdą spacją, bo trudniej się pomylić.

    • Dziękuję za komentarz!
      Tutorial, owszem, pisałem trochę pod kątem tego, co mi się wydarzyło i wiele rzeczy można tutaj lepiej zrobić, jednakże chciałem, by było jak najprościej i osoby nietechniczne też mogły to zrozumieć.

      Ad. zmiana 1) To chyba logiczne, że jeśli robimy backup w takim celu, to raczej nie na tym samym dysku, bo to trochę mija się z celem. Nawet w moim przykładzie widać, że zapisuję obraz na zewnętrznym dysku.
      Ad. zmiana 2) Prawda. Ale pod Windowsem nie ma partycji użytkowników. Ich katalogi domowe znajdują się na partycji systemowej. Poza tym mi osobiście zależało też na tym, by nie musieć wszystkiego na nowo instalować i konfigurować. Windows to nie Linux i tak łatwo nie da się tego zrobić.
      Ad. podział pliku) Nie spotkałem się z tym problemem, bo zgrywałem partycję na dysk zewnętrzny, gdzie mam system plików NTFS i nie wyobrażam sobie zgrywania partycji 100 GB na kilkanaście małych pendrive’ów – od tego mam w końcu dysk zewnętrzny 🙂
      Ad. ścieżki plików) Też prawda, choć ja przywykłem do auto uzupełniania nazw po wciskaniu klawisza Tab gdzie wykorzystywany jest slash, stąd pewnie zaproponowałem tę opcję.

      • Tak tylko zwracam uwagę na rzeczy, które osobie nietechnicznej mogą nie wydać się oczywiste.

        Przykładowo osoba, której nigdy nie zepsuł się dysk twardy, mogłaby z tego tutoriala wywnioskować, że zrobienie backupu na tym samym dysku to równie dobry pomysł, co zrobienie go gdzie indziej. Zresztą Windows tak robi 😉

        Co do katalogów domowych na partycji systemowej – prawda, pod windowsem zwykle tak jest. Ale z tutoriala można odnieść wrażenie, że użytkownik mając wybór, powinien raczej backupować pliki systemowe. Ja tylko zwracam uwagę, żeby czytelnik rozważył czy w jego przypadku nie lepiej częściej robić backupy plików prywatnych.

        Ja mam dwa dyski USB 500 GB i jeden 1 TB… dwa pierwsze fabrycznie miały FAT32, trzeciego w sumie jeszcze nie używałem, to nie wiem. Ale ponieważ dysków używam z różnymi systemami, to nie formatowałem na ext, tylko zostawiłem FAT32. W każdym razie, skoro producenci dysków USB formatują je FATem, to zakładam, że wielu użytkowników będzie mieć właśnie taki system plików na dyskach USB, które IMHO są bardzo wygodne do robienia backupów.

        • Witam
          Ja używam dysku sieciowego jako magazynu prywatnego. Gdy sypie się system to najszybszym sposobem jest reinstalacja systemu oraz programów i podpięcie klienta sieciowego do synchronizacji prywatnych danych. Pozdrawiam

        • To także jest dobry pomysł. Ja nie posiadam dysku sieciowego i Twoja opcja nie wydaje mi się najlepszą, ponieważ ja lubię zachować stan programów i konfiguracji wszystkiego tak, jak było (kwestia przyzwyczajenia, wygody i oszczędności masy czasu). Prywatne dane mam w sumie rozsiane po całym dysku (korzystam z Windowsa i zrobiłem sobie osobne partycje na system, dane i programy). Mam też dysk WD My Passport, który także ma bardzo fajne opcje automatycznego backupowania danych po podłączeniu dysku, niemniej jednak jestem zbyt leniwy, by to wszystko zainstalować i skonfigurować (i w międzyczasie skończyło mi się miejsce na tym dysku 🙂 ). Inne, całkiem ciekawe rozwiązanie, które stosuje kolega, to robienie kopii przyrostowej na Google Drive.

Dodaj komentarz