Jak przenieść Linuksa na inną partycję?

9

Muszę zrobić kopię działającego systemu linux, który (znajdujący się w /, a nowe miejsce jest przygotowane w / mnt / sdb5) wydaje się zawierać znaczną ilość twardych, miękkich linków i specjalnych plików w / dev; będzie cpioobsługiwać tę pracę bez stosowania dodatkowej magii?

Obecnie znane zabezpieczenia:

  • nie zamierza usuwać / modyfikować działającego systemu, dopóki kopia nie zostanie uznana za rozruchową i nie będzie działać root=/dev/sdb5; przed usunięciem wykonaj pełną kopię zapasową partycji.
  • użyje cpio do archiwizacji każdego katalogu głównego osobno, dlatego rozpakuje go ze środowiska LiveCD, aby partycja dawcy nie została uszkodzona

Ale nadal nie będę tracić czasu tylko dlatego, że cpio pominęło jakąś flagę i sparaliżowało uprawnienia / typ węzła / soft lub hardlink.

Którego narzędzia użyć / jakich podwodnych skał należy unikać?

kagali-san
źródło
@warren, dzięki. zamierzam teraz zrobić kolejny test cpio-vs-tar;)
kagali-san
bez obaw: mam nadzieję, że to pomoże :)
warren

Odpowiedzi:

10

Aby odpowiedzieć na aktualne pytanie dotyczące cpio: Oto flagi, których użyłbym do cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Oczywiście, ponieważ nie kopiujesz przez sieć, użyłbym tylko cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

A jeśli chcesz móc kopiować kilka razy, rsyncjest to lepszy wybór ze względu na jego możliwości wznowienia. (Obsługuje również cplisty ACL i rozszerzone atrybuty i może opcjonalnie działać w sieci jak cpio. Jest to więc najbardziej użyteczna opcja, z wyjątkiem wykonywania pierwszej kopii lokalnie, co wolę robić przy użyciu cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Nie zapomnij skopiować /booti /dev!

/bootjest łatwe, wystarczy skopiować. Ale w /devdzisiejszych czasach jest znacznie trudniejszy, ponieważ jest ukryty udev. Polecam następującą procedurę:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Kopiuj /devdo /mnt/sdb5stosując jedną z powyższych poleceń
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Miś
źródło
6

Jak wspomniano @Klox, przy kopiowaniu partycji o tym samym rozmiarze zgadzam się na użycie dd.

Ale jeśli chcesz skopiować dysk na inną partycję o innym rozmiarze, wolę rsync. Zamontuj nową partycję (powiedzmy / mnt / new) i:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Brak dodatkowej magii dla dowiązań symbolicznych i brak potrzeby Live CD (pojedynczy użytkownik / init 1 zrobi dobrze).

Torian
źródło
Ach tak. Używam rsynccały czas i przeoczyłem to, co oczywiste. Podoba mi się ddz podanych przeze mnie powodów, ale rsynclepiej pasuje do potrzeb PO.
Klox
3

Bardziej optymalny wariant ddpolega na partimageskopiowaniu tylko używanej sekcji partycji, co znacznie ułatwia kopiowanie dużych nieużywanych partycji.

Zwróć uwagę na ważne zastrzeżenie:

Partimage NIE obsługuje Ext4, który jest domyślny w nowych instalacjach Ubuntu.

Wygodna kopia znajduje się w dystrybucji System Rescue CD .

Steve-o
źródło
2

Przenosząc instalacje Linuksa między dyskami twardymi, zawsze uruchamiam z Live CD i używam dddo skopiowania całej partycji. Rozumiem, że to nie dotyczy zmian wielkości dysku (nieuchronnie nowy dysk jest większy, co upraszcza rzeczy), ale podoba mi się ta technika z dokładnie powodów, dla których martwisz się użyciem cpio: coś może pójść nie tak. Korzystając z tej ddtechniki, wszystko jest albo nic: albo nowy dysk uruchamia się i wszystko jest takie samo, albo dysk nie uruchamia się. Nie ma ryzyka pojawienia się problemów w przyszłości.

Teraz oczywiście jest problem, że partycja nie zapełnia nowego dysku, ale wolałbym po prostu utworzyć nową partycję, aby wypełnić dodatkowe miejsce i polegać na dowiązaniach symbolicznych do przenoszenia katalogów. (Jestem pewien, że są też narzędzia do zmiany rozmiaru partycji, ale ich nie użyłem).

Klox
źródło
System, o którym mówię, ma tylko około 50 koncertów za darmo na partycji XFS o pojemności 500 gb (której nie można zmniejszyć, obecnie obsługiwany jest tylko wzrost xfs_grow), a partycją główną jest także XFS; co gorsza, jest to ugruntowany Gentoo, który sam w sobie jest prawie taki gruby. Co gorsza, przeniesienie musi zostać wykonane bez dodawania większej ilości miejsca i obecnie nie można wykonać kopii zapasowej więcej niż 60 koncertów - więc nie ma operacji partycjonowania. Musisz umieścić Win na tym komputerze, aby przetestować niektóre rzeczy.
kagali-san
także dd jest fajny, ale do operacji na dyskach / partycjach zwykle używam więcej ... autorskich rozwiązań. Wydaje się, że Acronis TrueImage działa lepiej (kompresja, udostępnianie samby - z flasha livecd / liveusb).
kagali-san