Jak mogę użyć DD do migracji danych ze starego dysku na nowy dysk?


29

Aktualizuję wewnętrzny dysk twardy SATA w moim laptopie z dysku 40G na dysk 160G. Mam komputer stacjonarny z systemem Linux / Ubuntu z kartą SATA. Tak naprawdę chciałbym zrobić to samo dla kilku urządzeń CentOS i FreeBSD w pracy i wygląda na to, że miałoby to samo rozwiązanie.

Słyszałem, że mogę użyć DD do utworzenia kopii lustrzanej partycji 40G na dysku 160G lub że mogę zapisać partycję 40G jako obraz w moim systemie lokalnym, a następnie skopiować ten obraz 40G na dysk 160G.

Czy ktoś może opisać, jak to zrobić? Czy potrzebuję innych narzędzi, takich jak gparted


3
Ahha ... To jest pierwsze pytanie !!
Harshit Shrivastava

2
Pytanie numer jeden! Jestem również propozycją tej strony i pomyślałem, że zainicjuję stronę z dość technicznym pytaniem. Nagrodzono mnie koszulką i łupem.
Stefan Lasiewski

Odpowiedzi:


6

Twoim pierwszym zadaniem byłoby połączenie obu dysków z istniejącym systemem Linux lub podłączenie nowego dysku do oryginalnego systemu.

Musisz być bardzo ostrożny, ponieważ skopiowanie pustego dysku na dobry dysk jest bardzo proste!

Aby skończyć z sektorami rozruchowymi i wszystkim innym, zrobiłbyś coś takiego:

dd if=/dev/hdx of=/dev/hdy

Gdzie hdxjest dysk 40G, a hdydysk 160G. Zauważysz, że nie ma takich numerów partycji jak /dev/hdx1. Spowoduje to skopiowanie całego dysku, informacji o partycji i wszystkich innych.

Twój nowy dysk będzie podobny do starego, przydzielonego 40G. Powinien zostać uruchomiony natychmiast po umieszczeniu z powrotem w laptopie. Mam nadzieję, że użyłeś LVM? W przeciwnym razie masz nadzieję, że nie używałeś wszystkich partycji? Pokonanie tego punktu wymaga znacznie więcej informacji.

Innym rozwiązaniem jest zrzucenie każdej partycji. Wymaga to znacznie większej świadomości sytuacji, ponieważ trzeba będzie ponownie utworzyć informacje o rozruchu.

Wszystko to najlepiej nadaje się do klonowania komputerów, a nie uaktualniania dysków twardych. O wiele lepiej jest przywrócić do nowej instalacji przy użyciu kopii zapasowych.


17

Zwykle sugerowałbym takie rozwiązanie, jak: „podłącz drugi dysk twardy za pomocą zewnętrznej obudowy, uruchom komputer z płyty CD z systemem Linux, a następnie użyj polecenia, takiego jak dd if=/dev/sda of=/dev/sdb bs=1G, ale ponieważ chcesz użyć tej samej techniki do pracy, mam to, co może być lepsze rozwiązanie.

Wszystkie moje serwery i laptopy są obrazowane w pracy za pomocą Clonezilla . Są dwa sposoby korzystania z niego ... jeden z nich korzysta z dedykowanego serwera i prawdopodobnie jest dla ciebie zbyt wysoki, a drugi wykorzystuje bootowalną płytę CD i zewnętrzny dysk twardy.

Chodzi o to, że uruchamiasz się z dysku CD Clonezilla i masz duży (większy niż dysk źródłowy) zewnętrzny napęd USB. Clonezilla przeprowadzi cię przez proces tworzenia obrazu istniejącego dysku, po czym wyłączysz maszynę, wymienisz napęd, a następnie uruchom ponownie komputer w Clonezilli i przeprowadzi Cię przez proces przywracania danych.

Daje to możliwość A) umieszczenia obrazu na większym dysku, a B) zachowania kopii zapasowej danych.


5

Podczas gdy można użyć dd skopiować dysk takiego, robi tak ma szereg wad:

  1. Miejsce docelowe musi być dokładnie tego samego rozmiaru lub większe niż źródło
  2. Po skopiowaniu konieczna będzie zmiana rozmiaru partycji, aby wykorzystać dodatkowe miejsce
  3. Będziesz tracić czas na kopiowanie wolnego miejsca
  4. Wszelkie fragmentacje występujące na starym dysku zostaną zachowane

Korzystanie z programu do tworzenia obrazów, takiego jak Ghost4Linux, partclone lub clonezilla, zajmuje się przynajmniej liczbami 2 i 3. Możesz także po prostu sformatować nowy dysk, zamontować go i skopiować wszystkie pliki za pomocą cp -ax(jako root), a następnie ponownie zainstalować program ładujący na nowym dysku. Ta metoda nie ma żadnej z powyższych wad.


3

Aby po prostu skopiować partycję, możesz użyć dd if=/dev/srcDrive of=/dev/dstDrivelub coś takiego. Poleciłbym przeczytać jego stronę podręcznika . Przepraszam, nie mogę podać więcej informacji, ponieważ jestem teraz w pracy ..


2

Pytałeś, jak to zrobić za pomocą dd, ale lepiej odniosłem sukces, przesyłając dane zrzutu do przywracania . Biorąc pod uwagę źródłowy ad1s1a i docelowy ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

Próbowałem tego na FreeBSD, właściwie znalazłem to na Forum FreeBSD


1

Jednym prostym przykładem jest to:

dd if=/dev/sda of=/dev/sdb

Ale jeśli masz jakieś specjalne potrzeby, naprawdę powinieneś przeczytać stronę podręcznika (man dd) lub wyszukać w Google.

Innym pomysłem może być użycie rsync (nie zapomnij ustawić właściwych opcji, takich jak -az [pakuje pliki zamiast kopiować jeden plik po drugim] lub --numeric-ids [używa identyfikatora uid / gid zamiast nazw takich jak „root”] i może niektóre inne). Link zawiera wiele przykładów.

Jeśli nowy dysk twardy nie ma partycji, możesz użyć gparted lub palimpset.

Jeśli nie masz pewności, sformatuję dysk twardy, a następnie zsynchronizuję dane z rsync.


1

Przeprowadziłem migracje podobne do tego, uruchamiając system z podłączonymi dyskami i Live CD.

  1. Odtwarzasz informacje o partycjach pierwszego dysku na drugim, prawdopodobnie zwiększając niektóre partycje, aby wykorzystać dodatkowe miejsce i tak dalej.
  2. Załóżmy, że masz / dev / sda {1,2,3,4} i chcesz je skopiować do / dev / sdb {1,2,3,4}, ty mkdir / mnt / sd {a, b} {1 , 2,3,4} i zamontuj każdą partycję w każdym katalogu (lub jeśli chcesz to zrobić jeden po drugim, możesz utworzyć / mnt / origin / mnt / destination i mount / umount każdą parę)
  3. Następnie wykonujesz cp -avr / mnt / origin /. / mnt / destination / (lub cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Poczekaj, aż będziesz przeglądać internet :)
  5. Pamiętaj, aby ponownie zainstalować GRUB, LILO lub jakikolwiek inny bootmanager, którego używasz.

W ten sposób defragmentujesz pliki podczas ich kopiowania, możesz także zmieniać systemy plików na partycjach (migrować z reiserfs lub ext3 na ext4 itp.), Ale pamiętaj, aby edytować / etc / fstab po skopiowaniu, aby dopasować nowa sytuacja.

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.