Как пропустить MBR и таблицу разделов при выполнении dd раздела

5198
linuxnewbie

Мне нужно скопировать раздел SATA на внешний USB-раздел, оба раздела имеют одинаковый размер, но общий размер диска различен, я хочу копировать только данные и не беспокоиться о загрузочном секторе, поэтому не хочу копировать информацию о разделе SATA в на USB-диск. Таким образом, в команде dd достаточно пропустить 1 блок (skip = 1)? Спасибо

3

3 ответа на вопрос

3
akira

mbr - это первые 512 байт устройства. проверив 'man dd', вы обнаружите, что можете использовать 'skip = BLOCKS', чтобы пропустить несколько байтов в начале ввода:

% dd if=IN_DEVICE ibs=512 skip=1 of=OUT_DEVICE 

но в целом я не думаю, что это хорошая идея, если вы «просто хотите получить данные» ... потому что вы копируете только часть файловой системы и т. д. Почему бы вам не скопировать данные из файловой системы в файловую систему?

потому что он не хочет загрузочную информацию или данные раздела на своем USB-диске. John T 14 лет назад 0
Благодарю. На самом деле я пытаюсь скопировать одновременно на несколько дисков, поэтому я не могу сделать это. Это для размера блока по умолчанию 512. Предположим, если я упомянул bs = 8M, тогда он пропустит первые 8 Мбит правильно?. Как пропустить первые 512 байт, сохраняя размер блока копирования 8M или какое-то другое значение? linuxnewbie 14 лет назад 0
@john: копирование из файловой системы в файловую систему не передает информацию о загрузке или разделе. очевидно, почему он этого не хочет. я только что заявил, что не думаю, что было бы хорошей идеей сделать полное копирование через dd и перенести «часть» файловой системы (первые x байтов раздела ntfs / ext3 / любой другой) в другое место, а затем конец Файловая система не соответствует концу раздела. akira 14 лет назад 0
@linuxnewbie: ну, вы можете указать dd 'obs = 8M', который указывает 'размер буфера вывода'. за пропуск только первых 512 байт, а затем снова увеличьте ibs: я не думаю, что это возможно с помощью dd. но, очевидно, вы могли бы написать отличную программу .c, которая делает это :) akira 14 лет назад 0
0
John T

Да. Если вы не играли с ним, по умолчанию используется 1 блок (512 байт).

0
Neal

Я могу быть здесь идиотом, но нельзя просто использовать dd в разделе, а не на диске, поэтому используйте if=/dev/sda1 of=/dev/sdb1вместо if=/dev/sda of=/dev/sdb skip a bit.

И нужно ли так ddили иначе использовать ; чтобы копировать только данные, почему бы не использовать команду копирования 'cp' rsync, браузер flie или любой другой способ копирования данных, а не необработанных данных на диске?

хорошо, попробую. Благодарю. Но нельзя использовать любую другую опцию «cp, rsync и т. Д.» Из-за большого размера (~ 80 ГБ) файлов и необходимости копировать несколько дисков одновременно. linuxnewbie 14 лет назад 0
Но разве ДД не займет больше времени? Он должен копировать каждый байт из одного раздела в другой, тогда как другие программы просто копируют данные ... Neal 14 лет назад 0
Дайте мне знать, может ли любая программа (linux / win) копировать большие данные (60 - 80 ГБ) на несколько дисков одновременно (параллельное копирование из одного источника в несколько мест назначения, с локальных дисков не через сеть - многоадресной передачей). linuxnewbie 14 лет назад 0
Не то, чтобы я знал, возможно, вы должны задать это как новый вопрос. Neal 14 лет назад 0

Похожие вопросы