używając dd, aby skopiować partycję na inną partycję, używając dysku fizycznego


17

Nie jestem pewien, jak lepiej to wyjaśnić w temacie, więc „pytanie” może być niewłaściwe. Ale tu idzie. Mam trzy dyski twarde. Dysk A to dysk o pojemności 320 GB, dysk B to dysk o pojemności 80 GB, a dysk C to dysk o pojemności 1 TB. Skopiowałem dane z dysku o pojemności 80 GB na dysk o pojemności 1 TB i zamierzam zmienić rozmiar partycji (aby móc później skopiować dane z dysku o pojemności 320 GB).

Moje pytanie brzmi: jeśli uruchomię system operacyjny na dysku 1 TB, czy mogę użyć dd, aby skopiować dysk 320 GB na inną partycję na tym dysku fizycznym? Wiem, że nie powinienem kopiować partycji na żywo (co oznacza, że ​​nie mogę skopiować danych z dysku 320 GB, jeśli korzystam z tego systemu operacyjnego).

Moje rozumowanie jest następujące: próbowałem użyć Acronis TrueImage, Partition Manager i Image 4 DOS / Linux (obie aplikacje), a skopiowanie danych zajęło mi tydzień. Oznacza to, że przez tydzień nie mogę korzystać z komputera, co jest niedopuszczalne (chyba że jest to moja jedyna opcja). Mam nadzieję, że to zadziała, więc mogę przynajmniej korzystać z komputera podczas kopiowania.

W razie potrzeby mogę albo uruchomić się z Live CD (niezbyt preferowana opcja), albo użyć „Dysku B”, ale chciałbym jak najszybciej usunąć ten dysk.


Jasne, czemu nie ?
Michael Hampton

Odpowiedzi:


18

Tak, to, co chcesz zrobić, będzie działać dobrze, biorąc pod uwagę następujące dwa warunki:

  1. Nie ma (zamontowane) system plików na partycji, które są dd'ing do .
  2. Partycja jesteś dd'ing do co najmniej taki sam rozmiar jak jeden jesteś dd'ing od (czyli 320 GB).

Powodem, dla którego będzie działać poprawnie, jest to, że partycje są tylko plikami w systemie UNIX. Ich zawartość ma specjalne znaczenie tylko wtedy, gdy zawiera zamontowany system plików.

Zakładając, że masz układ, który wygląda następująco:

1 TB = sda, dwie partycje, sda1, z którego dokonałeś rozruchu, i sda2, do którego chcesz uruchomić

320 GB = sdb, jedna partycja, sdb1, z którego korzystasz

Twoje polecenie wyglądałoby tak:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

Ten bs=1Mparametr zapewnia, że ​​dd kopiuje dane w dużych porcjach zamiast wydawać żądanie dla każdego sektora.


1
if = źródło = przeznaczenie Myślę, że coś jest nie tak w powyższej radzie.

W powyższym przykładzie sdb1 jest źródłem, a sda2 jest miejscem docelowym. Zredagowałem odpowiedź, aby wyrazić się lepiej.
Michael Fenn,

1
Nie musisz wykonywać resize2fspo kopii? Nawet gdy rozmiary są różne?
Sopalajo de Arrierez

5

Zasadniczo można dodawać dowolną partycję, gdy nie jest ona zamontowana. Jeśli musisz zamontować partycję źródłową do odczytu podczas działania dd, lepiej byłoby zamontować ją tylko do odczytu z parametrem -o ro.

jeśli chcesz najpierw uruchomić na partycji źródłowej amd, a następnie użyj dd, aby go skopiować, możesz wykonać mount -o ro, ponownie zamontować /, aby odczytał się dopiero po uruchomieniu.


Tylko do odczytu nie oznacza, że ​​system plików nie wygłupia się z dziennikiem ani nie reorganizuje wolnego miejsca.
vonbrand

@vonbrand, czy możesz podać przykład implementacji systemu plików linux, który robi to w trybie RO?
Basilevs,

@vonbrand systemy plików w Uniksie, zamontowane istota ro bardzo nie oznacza to, że żadne zapisy powinny być wydawane do urządzenia bazowego.
Michael Fenn
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.