Przeniesienie całej instalacji systemu Linux na inny dysk


55

Mam Ubuntu 14.04 z dużą ilością pakietów i rzeczy związanych z pracą, z czego jestem bardzo zadowolony. Jest zainstalowany na moim głównym dysku SSD o pojemności 120 GB (wybrałem „/” podczas instalacji Ubuntu, więc uważam, że wszystko powinno być na tym dysku). Pokazuje się jako / dev / sda

Teraz dodałem kolejny dysk SSD do mojego komputera, który ma pojemność 240 GB. W tej chwili nie mam pod ręką żadnych innych nośników pamięci (np. Zewnętrznego dysku twardego).

Ponieważ nowy dysk 240 GB ma oczywiście większą pojemność i jest szybszy (nowsza generacja niż moja 120 GB), chcę przenieść swój system Linux na ten nowy dysk. Ten nowy dysk pokazuje się jako / dev / sdb i w tej chwili nie jest sformatowany ani nic (dosłownie rozpakowałem i włożyłem teraz do komputera: P)

Jak mogę bezpiecznie przenieść instalację Linuksa na nowy dysk?

Mogę zmienić kabel SATA, aby nowy dysk wyświetlał w razie potrzeby jako / dev / sda.

To jest wynik działania „fdisk -l”, jeśli to pomaga:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00076d7a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   226064383   113031168   83  Linux
/dev/sda2       226066430   234440703     4187137    5  Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5       226066432   234440703     4187136   82  Linux swap / Solaris

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

4
Wygląda na to, że planujesz teraz używać ich obu. Jeśli tak, powinieneś rozważyć użycie nowszego, większego, /homezamiast całego systemu. Powinno to być łatwiejsze (po prostu przenieś wszystko i dodaj jedną linię do / etcs / fstab), a większość dużych plików prawdopodobnie przejdzie do twojego katalogu domowego (i tak dalej na większy dysk).
Kevin

Odpowiedzi:


35

W tym celu możesz użyć CLONEZILLA .

Clonezilla to bezpłatne narzędzie do tworzenia partycji i obrazowania / klonowania dysków, które można wykorzystać do tworzenia kopii zapasowych wszystkich danych (całych dysków lub partycji) w wysoce skompresowany sposób, a następnie klonowania ich z powrotem na dysk twardy, aby uzyskać dokładnie ten sam stan. Jest to szybsze niż instalowanie systemu operacyjnego przez większość czasu.

wprowadź opis zdjęcia tutaj

W twoim przypadku możesz również użyć opcji „urządzenie-urządzenie”, ale nie jestem z nią zaznajomiony.

Szczegółowy przewodnik na temat Clonezilla można znaleźć tutaj: http://clonezilla.org


1
Sugeruję obejrzenie dwóch filmów instruktażowych wcześniej: youtube.com/watch?v=41tTudaQb0I i youtube.com/watch?v=LS6VhLDw-io
Severus Tux

1
To także dobra opcja. Ale jestem zbyt leniwy, aby stworzyć kij klonowy ;-)
Pilot6

Odkryłem, że clonezilla nie kopiuje na mbr, więc cały obraz dysku i odrobina pracy z gparted powinny załatwić
sprawę

1
łał! miło to słyszeć ;-), Czas rozruchu, To z powodu zmienionych UUID, tj. Nowe UUID i Stare waszych ważnych partycji (home, Swap) uległy sfazowaniu. Aby to naprawić, postępuj zgodnie z instrukcjami podanymi tutaj z odpowiednimi zmianami : askubuntu.com/a/737340/497359 Jeśli znajdziesz jakiś problem, proszę go skomentować.
Severus Tux,

1
@adampski: Wygląda na to, że jest to błąd w Clonezilli 2.4.5. Aby obejść ten problem, możesz użyć Clonezilla 2.4.2 lub Clonezilla 2.4.2 Server Edition (DRBL). :)
cl-netbox

40

Można to zrobić na kilka sposobów. Ale najłatwiej jest po prostu skopiować wszystkie pliki ze starego dysku na nowy.

  1. Utwórz partycję ext4 i partycję wymiany na nowym dysku.

  2. Uruchom z LiveUSB.

  3. Zamontuj starą partycję Ubuntu w jakimś katalogu, zamontuj nową w innym katalogu.

  4. Skopiuj wszystkie pliki ze starego do nowego za pomocą cp -apolecenia.

  5. Zainstaluj grub na nowym dysku .

  6. Zaktualizuj /etc/fstabz nowymi identyfikatorami UUID.

Jeśli coś nie jest jasne, mogę dodać wyjaśnienia.


1
+1 - można również uniknąć rozruchu z LiveUSB i zrobić wszystko podczas uruchamiania z oryginalnego dysku, wykonać wszystkie zmiany, zrestartować komputer, voila.
Siergiej

1
@ Étienne: Nie kopiuj tych katalogów (także /dev), po prostu utwórz puste katalogi na dysku docelowym i ustaw na nich tego samego właściciela / uprawnienia, co na dysku źródłowym.
Siergiej

10
Skończyło się na tym, że: sudo rsync -a / /mnt/linux/ --exclude sys --exclude proc --exclude dev --exclude tmp --exclude media --exclude mnt --exclude run następnie sudo mkdir sys proc dev tmp media mnt run
Étienne

1
@ Étienne czy mógłbyś edytować swój komentarz - wykluczyć komentarz? Jeśli zrobisz to tak, jak napisałeś, / var / tmp również zostanie wykluczone (wydaje mi się), po klonie jest to pominięte przez systemd-resolved.service, co powoduje, że rozpoznawanie nazw nie działa ... Myślę, że powinno be --exclude / tmp --exclude / proc itd. Dzięki
swe

1
@swe Nie powinienem utrzymywać komentarza, raczej zaproponuj edycję oryginalnej odpowiedzi.
Étienne

20

Jeśli masz trochę czasu i chcesz iść bezpiecznie:

$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync

Objaśnienie polecenia:

  • ifjest wejściem, ofmiejscem docelowym
  • bsustawia rozmiar bloku. Jest to rozmiar fragmentów, w których dd będzie czytać i zapisywać. Wyższe rozmiary fragmentów zwykle oznaczają wyższą wydajność, ale także większe uszkodzenie danych, jeśli na dysku wejściowym występują błędy, patrz tutaj: archwiki na dd
  • noerror kontynuuje w błędach r / w.
  • sync synchronizuje przesunięcia, jeśli wystąpił błąd.

To w zasadzie stworzy obraz twojego dysku sda i zapisze go na sdb (ten sam układ partycji itp.) Oczywiście zapisuje to całe 120 GB, ponieważ jest to zależne od pliku. Dlatego bardzo bezpieczny, ale nie najszybszy, jeśli używasz tylko niewielkich części dysku. Jednak jeśli dysk wejściowy jest raczej pełny, może być nawet szybszy.

ALE:

  • Następnie prawdopodobnie chcesz zmienić rozmiar partycji, ponieważ w przeciwnym razie nie będziesz mógł skorzystać z dodatkowej przestrzeni.
  • W każdym razie może być konieczna edycja pliku / etc / fstab.
    Jest tak w przypadku, gdy do rozpoznania dysków używane są identyfikatory sprzętu.

2
Twoje ddpolecenie będzie działać wiecznie. Zastanów się nad dodaniem bs=1Mdo niego
Dmitrij Grigoryev

Rozmiar bloków Afaik nie musi wynosić 1M na dyskach SSD, ale
sprawdzę

Ograniczeniem nie jest technologia SSD, ale bsdomyślna wartość, która wynosi 512 bajtów.
Dmitrij Grigoryev

1
rozszerzona odpowiedź z bs, dzięki za heads-up
larkey

1
Dzięki za szczegółową odpowiedź ... Nauczyłem się kilku rzeczy! ale postanowiłem pójść z clonezillą i później zmienić rozmiar partycji.
Saeid87

5

Sposób, w jaki to robię po przełączeniu na nowy dysk twardy:

  • utwórz układ partycji, który chcę na nowym dysku
  • uruchom z Live CD / USB lub zainstaluj, uratuj itp.
  • zamontuj stare partycje dysku twardego, na które chcesz skopiować, powiedzmy, /mnt/a
  • zamontuj nowe partycje dysku twardego, na przykład na pliki /mnt/b
  • cp -alub użyj tar, aby skopiować pliki z /mnt/ado/mnt/b
  • zainstaluj moduł ładujący (lilo lub grub) na nowym dysku ¹
  • zaktualizuj /etc/fstab(możesz użyć blkiddo identyfikacji nowych UUID)
  • uruchom ponownie i sprawdź, czy wszystko jest w porządku

Uwaga¹:

Sprawdź wszystkie dyski twarde i partycje za pomocą następującego polecenia:

sudo fdisk -l 

Teraz zanotuj partycję, na której jest zainstalowany Ubuntu, która będzie wyglądać następująco: /dev/sda1

Zamontuj partycję, na której chcesz zainstalować GRUB 2 (partycja dysku twardego), a system plików pojawi się w Nautilus. Teraz musimy zamontować odpowiednią partycję dysku twardego, aby wprowadzić zmiany w rzeczywistym MBR dysku twardego. W tym celu musimy:

sudo mount /dev/sda1 /mnt
mount

Teraz zamontuj partycję w alternatywnej lokalizacji

sudo mount /dev/sda1 /mnt/boot

Utwórz niezniszczalny link z /devfolderu na obrazie na żywo, z którego uruchomiłeś system, do /devfolderu na partycji, do której zamontowałeś/mnt

sudo mount --bind /dev /mnt/dev/

Teraz musimy zmienić katalog główny z katalogu głównego CD na żywo (/) na katalog główny zamontowanej partycji

sudo chroot /mnt

Teraz jesteś w nowej powłoce root, w której zamontowana partycja jest nowym rootem. Możesz zweryfikować to wpisanie ls. Ponieważ jesteśmy teraz na zamontowanej partycji, możemy przejść dalej i zainstalować GRUB 2:

sudo grub-install /dev/sda 

Instalacje powinny zakończyć się teraz, bez błędów

Wyjdź z powłoki CHROOT, wpisując exitlub naciskając Ctrl+, D co spowoduje powrót do powłoki Live CD / USB

Odmontuj zamontowane wcześniej partycje, aby uzyskać czysty restart:

sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt

i uruchom ponownie po wyjęciu Live CD lub USB Stick, aby uruchomić z dysku twardego:

sudo reboot

Źródło


@ baobab33: Możesz skopiować i wkleić instrukcje tutaj na tej stronie, a następnie przypisać. Nie możesz tylko link do zewnętrznego źródła. Zaktualizuj również źródło z powyższymi poprawkami.
Fabby

4

W przeciwieństwie do innych odpowiedzi, pozwala to sklonować instalację Linuksa i dodać ją do menu Grub przy zachowaniu bieżącej instalacji. Dodatkowo automatycznie modyfikuje /etc/fstabdla ciebie i aktualizuje grubmenu rozruchu.

Dostępne jest menu pomagające wybrać właściwą partycję do sklonowania. Klon z partycji jest twoją bieżącą partycją rozruchową.

rsyncjest używany dla optymalnej prędkości, jeśli zdecydujesz się na ponowne sklonowanie partycji. Jest to korzystne, jeśli aktualizacja się nie powiedzie, czekasz na naprawę błędu i chcesz ponownie uruchomić aktualizację. Podobnie możesz wybrać złe opcje podczas aktualizacji i chcesz to zrobić ponownie.

Pełny skrypt można znaleźć tutaj: Skrypt Bash do klonowania Ubuntu na nowej partycji w celu przetestowania aktualizacji 18.04 LTS i tak wygląda ekran:

clone-ubuntu.png


0

Postanowiłem zrobić eksperyment związany z tym postem.

Kupiłem Lenovo ThinkCentre. Miał 256 GB SSD i 1 TB HDD (typu spinner - szybki, ale nie tak szybki jak SSD).

Kiedy zainstalowałem Linux Mint 19.2 (LM19.2), zainstalowałem go na dysku 1 TB. Dysku SSD nie udało się odzyskać i kupiłem nowy dysk SSD Kingston 240 GB.

Właśnie miałem zainstalować LM19.2 na nowym dysku SSD, ale wydawało się, że musi istnieć sposób na przeniesienie mojego dobrze rozwiniętego obrazu LM19.2 z dysku 1 TB na nowy dysk SSD.

Znalazłem ten post i chociaż powyżej jest kilka dobrych rad, byłem w stanie eksperymentować. Poniżej znajduje się opis tego, co zrobiłem i działało to BARDZO dobrze.

  1. Użyłem GParted do utworzenia tablicy partycji i partycji na dysku SSD, które były tego samego typu co te na dysku twardym 1 TB.
  2. Wykonałem migawkę WSZYSTKO na dysku twardym LM19.2 1 TB TimeShift (nowe narzędzie w Ubuntu / Linux Mint).
  3. Przywróciłem tę migawkę na dysk SSD.
  4. Po wykonaniu powyższych kroków (możesz nawet zrobić 1 równolegle z 2 i 3), uruchomiłem ponownie komputer, upewniając się, że wybierze dysk SSD.
  5. Jedyną dziwną rzeczą podczas restartu było to, że ekran POCZĄTKUJĄCEGO gruba zapytał, czy chcę uruchomić system Ubuntu. Uznałem, że było to specyficzne dla przywrócenia TimeShift i tak było.
  6. Kolejne uruchomienia uruchamiane tak jak zwykle LM19.2.
  7. Wyedytuję tę odpowiedź, gdy zweryfikuję, że mogę to zrobić z zewnętrznym dyskiem zawieszonym na komputerze (i wydaje się oczywiste, że to zadziała), ponieważ oznaczałoby to, że mogę szybko replikować dowolną z moich maszyn LM na nowy sprzęt.

Już sama prędkość rozruchu sprawiła, że ​​te proste kroki były warte wysiłku. Nawet Dropbox przesłał się dobrze - chciałem tylko, żebym się ponownie zalogował i indeksowanie plików zajęło cały czas, ale działało świetnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.