Kopia zapasowa i przenoszenie systemu na inn

Pomoc dotycząca instalacji systemu
Akkon
Junior Member
Posty: 834
Rejestracja: 09 listopada 2007, 14:06

Kopia zapasowa i przenoszenie systemu na inną partycję

Post autor: Akkon » 22 lutego 2008, 21:41

Inspiracją do napisania tego poradnika była dyskusja jaka na temat zaawansowanego przenoszenia systemu miała miejsce w >Tym wątku<. Opisywany poniżej sposób stanowi rezultat moich bezpośrednich testów.
  1. Najpierw zidentyfikujmy posiadane partycje:

    Kod: Zaznacz cały

    fdisk -l

    dokładny układ partycji
    ilość zajmowanego miejsca przez zamontowane partycje
  2. Przed przystąpieniem do przenoszenia systemu docelową partycję najlepiej przedtem sformatować a następnie sprawdzić w poszukiwaniu błędów:

    Kod: Zaznacz cały

    e2fsck -v -f -y /dev/partycja_docelowa
  3. W przypadku wystąpienia jakichkolwiek nie dających się usunąć (lub powtarzających się) błędów można skorzystać z polecenia, które dokona dokładnego wymazania danych zapisanych na partycji:

    Kod: Zaznacz cały

    dd if=/dev/zero of=/dev/partycja_docelowa
    Po wyzerowaniu partycji docelowej trzeba na niej ponownie utworzyć system plików:

    Kod: Zaznacz cały

    mkfs -V -c -t ext3 /dev/partycja_docelowa
  4. Dla lepszej kompresji na partycji źródłowej warto utworzyć pusty plik (wypełniony zerami) o rozmiarze całego niewykorzystanego miejsca. W ten sposób dane, które później będziemy kompresowali będą miały mniejszą wielkość. Krok ten nie jet konieczny, nie przeprowadzamy go również jeśli chcemy od razu przenieść partycję. Jeśli chcesz pominąć ten krok przejdź od razu do punktu 8.
  5. Obliczamy wielkości pliku z zerami. Zajętość partycji pokaże nam polecenie:

    Kod: Zaznacz cały

    df -B1 /dev/partycja_źródłowa

    Przykładowy wynik:

    Kod: Zaznacz cały

    System plików      bl.  1B B             użyte       dostępne    %uż. 
    /dev/sda1       10840489984    2559406080   7730405376  25% 
    Rozmiar dostępnej wielkości partycji dzielimy przez 512 np.:

    Kod: Zaznacz cały

    7730405376 / 512 = 15098448
  6. Wynik podajemy jako wartość parametru 'count' dla polecenia dd, które utworzy plik w katalogu głównym klonowanego systemu

    Kod: Zaznacz cały

    dd if=/dev/zero of=/plik.zero bs=512 count=15098448
    Uwaga!
    Wartość parametru 'count' dla każdej partycji jest inna. Podane tutaj liczby mają charakter przykładowy.
  7. Po utworzeniu tego pliku po prostu go usuwamy

    Kod: Zaznacz cały

    rm /plik.zero
  8. Teraz przechodzimy do właściwego klonowania. Najpierw przy pomocy dd tworzymy obraz partycji źródłowej:

    Kod: Zaznacz cały

    dd if=/dev/partycja_źródłowa of=/katalog/kopia_partycji_źródłowej.img
    W ten sposób otrzymamy dokładną kopię całej partycji, a nie tylko znajdujących się na niej danych. Plik ten możemy później skompresować, ale by nie tracić na to czasu a przede wszystkim miejsca, lepiej od razu przekierować wynik dd do programu kompresującego:

    Kod: Zaznacz cały

    dd if=/dev/partycja_źródłowa | gzip > /katalog/kopia_partycji_źródłowej.gz
    W ten sposób powinniśmy otrzymać plik o wielkości od 40-60% kopiowanej partycji źródłowej. Na istotne zmniejszenie wielkości pliku wynikowego wpływa utworzenie opisywanego wcześniej pliku wypełnionego zerami (patrz punkty 4-7).

    Uwaga!
    Jeśli nie zależy nam na posiadaniu kopii, a chcemy tylko przenieść/sklonować aktualną partycję systemową to posłużymy się poleceniem:

    Kod: Zaznacz cały

    dd if=/dev/partycja_źródłowa of=/dev/partycja_docelowa
  9. Przywracanie systemu odbywa się przez zdekompresowanie zapisanej kopii i zapisanie jej na partycję docelową:

    Kod: Zaznacz cały

    gzip -dcv /katalog/kopia_partycji_źródłowej.gz | dd of=/dev/partycja_docelowa
    Jeśli wcześniej nie kompresowaliśmy naszej kopii to wystarczy wpisać:

    Kod: Zaznacz cały

    dd if=/katalog/kopia_partycji_źródłowej.img of=/dev/partycja_docelowa
    Uwaga!
    Partycja docelowa nie może być mniejsza niż partycja źródłowa!
  10. Po przywróceniu kopii systemu dokonujemy sprawdzenia spójności zapisanych danych:

    Kod: Zaznacz cały

    fsck -V -t ext3 /dev/partycja_docelowa
    To polecenie oferuje nam standardowy test, dlatego dla pewności lepiej jest zastosować gruntowne sprawdzenie, które jest przeprowadzone nawet wtedy gdy dysk wydaje się czysty:

    Kod: Zaznacz cały

    e2fsck -v -f -y /dev/partycja_docelowa
    Test powtarzamy tak długo, aż program nie zgłosi nam żadnych błędów.
  11. W ten sposób udało nam się sklonować/odtworzyć naszą partycję systemową. Jeśli partycja docelowa była dokładnie tej samej wielkości jak partycja źródłowa, to już koniec naszych zmagań. Jeśli jednak partycja docelowa była większa, musimy jeszcze "pokazać" naszemu sklonowanemu systemowi plików prawdziwy rozmiar partycji, na której się znajduje. Standardowo widzi on bowiem dokładnie takie same wartości jak w oryginale. Możemy to sprawdzić wywołując polecenie (przy zamontowanej partycji) df i porównać go z wynikiem fdisk -l. By zlikwidować te niezgodności posłużymy się poleceniem:

    Kod: Zaznacz cały

    resize2fs -p /dev/partycja_docelowa
  12. Na koniec ponownie sprawdzamy dane:

    Kod: Zaznacz cały

    e2fsck -f -y /dev/partycja_docelowa
    Przenosząc system na inną partycję musimy jeszcze pamiętać, żeby po sklonowaniu zmodyfikować/dostosować odpowiednio fstab i ustawienia gruba (odwołania do partycji docelowej) oraz, jeśli nie będziemy korzystać z dotychczasowej, położenie partycji /home wraz ze znajdującymi się na niej katalogami użytkowników.

Zablokowany