Przenoszenie partycji Linux
Zdarza się konieczność przeniesienia całego systemu plików (filesystem) w Linux bądź to na inny dysk, bądź na inną partycję (slice) w obrębie tego samego dysku. Chciałbym przedstawić sposób, dzięki któremu łatwo przenieść cały filesystem w nowe miejsce, zachowując oczywiście uprawnienia (ACL) dla poszczególnych plików i katalogów. Opisana poniżej metoda wykorzystuje programy find oraz cpio, który są składnikiem każdego (chyba?) systemu Linux.
Miejsce docelowe
Pierwszym krokiem w przeniesieniu systemu plików jest oczywiście przygotowanie docelowego miejsca dla przenoszonego systemu plików. W przypadku przenoszenia na nowy dysk jest to utworzenie odpowiednio dużej partycji oraz zbudowanie na niej systemu plików. W systemach Linux do tworzenia partycji wykorzystać można (i należy) polecenie fdisk.
Kolejnym krokiem jest zbudowanie systemu plików na nowo utworzonej partycji. W Linux należy w tym celu użyć polecenia mkfs. Gdy na nowo utworzonej partycji mamy już system plików należy tę partycję zamontować. Do montowania służy polecenie mount.
Załóżmy, że przenosimy pliki i katalogi z / do /mnt. Stary dysk to /dev/sda, nowy /dev/sdb.
Przeniesienie plików
Dochodzimy do sedna czyli, zasadniczej operacji przeniesienia plików i katalogów.
Polecenie:
pozwoli przenieść całą zawartość partycji / do /mnt.
find / -xdev -print0 wypisuje z pełną ścieżką wszystkie pliki z katalogu /, nie przechodząc do innych punktów montowania (-xdev) oraz na końcu nazwy pliku wstawia znak null (-print0). Dzięki parametrowi -print0 można przenieść nawet te pliki, które mają w nazwie znak nowej linii.
cpio -pa0V /mnt wywołuje cpio w trybie pass (parametr -p) oraz przenosi te pliki, których pełne lokalizacje - katalog oraz nazwa pliku - pojawiają się na wejściu do katalogu /mnt (parametr -a). Parametr -0 informuje cpio, że separatorem plików jest znak null natomiast parametr -V powoduje wypisanie na ekranie znaku "." przy każdym przenoszonym pliku, pozwala to wizualizować pracę cpio.
W podobny sposób możemy przenieść również filesystem innej partycji i np. /home
Po przeniesieniu partycji / należy przygotować plik /etc/fstab, tak aby punkty montowania wskazywały na punkty montowania na nowym dysku. Jest to szczególnie ważne, ponieważ punkty montowania mogą być identyfikowane np. poprzez UUID albo ID.
Instalacja GRUB
Warto pamiętać aby po przeniesieniu / zainstalować na nim GRUB. Przy założeniach jak wyżej można to wykonać za pomocą któregokolwiek z poniższych poleceń:
Po wykonaniu powyższych operacji można zatrzymać system, w miejsce starego zamontować nowy dysk i uruchomić system z nowego dysku. Powodzenia!
Tomasz Zin
Powyższe wskazówki zaczerpnięte są z publikacji: "Hack and / - Migrate to a New Hard Drive" z Linux Journal z 2008 roku oraz własnych doświadczeń. Wyrażona powyżej opinia jest prywatnym poglądem autora wypowiedzi. Korzystasz na własną odpowiedzialność.
