Как мне скопировать сырые блоки на тот же диск, используя dd?

253
Micah Røckstår Henning

Я хочу переместить физические блоки с одной части жесткого диска на другую часть того же диска. Я пытался использовать ddна MacOS High Sierra, но данные не передаются.

$ sudo dd if=/dev/disk2 bs=512k count=16777216 skip=916709376 seek=1893461391 0+0 records in 0+0 records out 0 bytes transferred in 0.000022 secs (0 bytes/sec) 

Поэтому я пытаюсь переместить 16 777 216 блоков 512 КБ, начиная с позиции 916 709 376 до позиции 1 893 461 391. Я тоже пробовал в том числе, of=/dev/disk2но результаты были такими же. Что я делаю неправильно? Спасибо!

1
Я действительно хотел бы, чтобы люди действительно помогали вместо призрачного подавления голосов. Micah Røckstår Henning 6 лет назад 0

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

2
Gordon Davisson

ddинтерпретирует многие параметры (включая count, skipи seek) как количество блоков, а не количество байтов. В результате он пытается пропустить около 480 терабайт в / dev / disk2, и я подозреваю, что disk2 не такой большой.

Вы имели ввиду эти значения в байтах? Если так, то есть проблема: seekзначение является нечетным числом (а GCD из трех чисел равен 1), поэтому я думаю, что вам нужно будет указать размер блока в один байт ... что заставит его работать очень медленно.

Спасибо за ваш ответ. Я подумаю об этом немного. Размеры основаны на таблице разделов из `sudo gpt show / dev / disk2`, которую я считал блоками. Диск размером 1 ТБ. По сути, я пытаюсь переместить группу разделов в конец диска, физически перемещая их данные, а затем обновляя таблицу разделов. Это оставит много нераспределенного пространства в середине диска, который я могу использовать для увеличения размера раздела. Micah Røckstår Henning 6 лет назад 0
@ MicahRøckstårHenning Я считаю, что `gpt show` перечисляет позиции и размеры в 512-байтовых" секторах ", поэтому переключение размера блока на 512 может заставить его работать. Но у меня есть оговорка по поводу размещения раздела со смещением нечетного числа - многие современные накопители на самом деле имеют сектора по 4 КБ, поэтому обычно вы хотите, чтобы все было кратно этому (что будет кратно 8 512-байтным секторам старого стиля) ). Я бы перепроверил ваши расчеты размещения. Gordon Davisson 6 лет назад 0