використовуючи dd для копіювання розділу на інший розділ, використовуючи фізичний диск


17

Я не впевнений, як це краще пояснити в темі, тому "питання" може бути невірним. Але ось іде. У мене є три жорстких диска. Диск А - накопичувач на 320 ГБ, Диск В - накопичувач на 80 ГБ, а Диск С - 1 ТБ. Я скопіював дані з накопичувача на 80 ГБ на накопичувач 1 ТБ і збираюся змінити розмір розділу (тому я можу скопіювати дані з накопичувача на 320 ГБ на наступний).

Моє запитання таке: Якщо я завантажуюся в операційну систему на диску 1 ТБ, чи можу я використовувати дд, щоб скопіювати накопичувач на 320 ГБ на інший розділ на цьому фізичному диску? Я знаю, що я не повинен копіювати живий розділ (тобто я не міг скопіювати дані з накопичувача на 320 ГБ, якщо я запускаю цю операційну систему).

Моє міркування таке: я спробував використовувати Acronis TrueImage, менеджер розділів та зображення 4 DOS / Linux (обидва програми), і копіювання даних пройшло більше тижня. Це означає, що протягом тижня я не в змозі користуватися комп’ютером, що не прийнятно (якщо тільки це мій єдиний варіант). Я сподіваюся, що це працює, тому я можу принаймні користуватися комп’ютером, поки роблю копію.

Якщо мені доведеться, я можу завантажуватися на живий компакт-диск (не дуже бажаний варіант) або використовувати "Диск B", але я хотів би якнайшвидше видалити цей диск.


Звісно, ​​чому б ні ?
Майкл Хемптон

Відповіді:


18

Так, те, що ви хочете зробити, буде добре працювати з огляду на наступні дві умови:

  1. Існує немає (встановлено) файлова система на розділі ви dd'ing до .
  2. Перегородка ви dd'ing до , по крайней мере такого ж розміру , як той , який ви dd'ing від (тобто 320 ГБ).

Причина того, що це буде добре працювати в тому, що розділи - це лише файли в UNIX. Їх вміст має особливе значення, лише якщо вони містять змонтовану файлову систему.

Якщо припустимо, що у вас є такий макет:

1 TB = sda, два розділи, sda1, з якого ви завантажилися, і sda2, до якого ви вводите

320 ГБ = sdb, один розділ, sdb1, з якого ви надходите

Ваша команда виглядатиме так:

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

bs=1MПараметр є щоб гарантувати , що Dd копіює дані в великих шматках замість видачі запиту для кожного сектора.


1
якщо = джерело = призначення, я думаю, що в порадах вище щось не так.

У наведеному вище прикладі sdb1 - джерело, а sda2 - адресат. Я відредагував відповідь, щоб бути більш зрозумілим з цього приводу.
Майкл Фенн

1
Не потрібно виконувати resize2fsпісля копіювання? Навіть коли розміри різні?
Sopalajo de Arrierez

5

Взагалі його нормально до будь-якого розділу, поки він не встановлений. Якщо вам доведеться монтувати розділ джерела для читання під час запуску dd, було б краще встановити його зчитування лише з параметром -o ro.

якщо ви хочете спочатку завантажитися у вихідний розділ amd, а потім скористатися dd, щоб скопіювати його, ви можете виконати mount -o ro, перемонтажувати / зробити його читанням лише після завантаження.


Тільки для читання не означає, що файлова система не обманює журнал чи реорганізує вільний простір чи що завгодно.
vonbrand

@vonbrand Ви можете надати приклад реалізації файлової системи Linux, яка робить це в режимі RO?
Василевс

@vonbrand В UNIX файлових системи, монтуються ро дуже чи означають , що немає запису не повинна бути видана підстильним пристрій.
Майкл Фенн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.