Переместить данные раздела с dd вправо

Мне нужна помощь, чтобы получить командную строку dd, которая перемещает мой раздел по блоку вправо.

Я наткнулся на ошибку при использовании инструментов для изображения некоторых ПК, и теперь мне нужно переделать эти машины, не теряя при этом никаких данных. Это очень хорошо работает с gparted 0.18.0. Там я перемещаю свой второй раздел вправо со смещением 79 МБ. Затем я выращиваю свой первый раздел 79MB. Все работает безупречно. Но поскольку существует около 35 машин, я хотел бы создать сценарий, который это делает.

  • Том Linux на динамическом диске Windows
  • Что это за раздел восстановления для новой установки Windows?
  • Как изменить размер расширенного раздела?
  • Не удается удалить раздел восстановления
  • Как использовать sysprep и imagex для диска с одним, чем разделы?
  • Как восстановить разделы и данные после команды diskpart «clean»?
  • Изменение размера и все довольно просто. То, что я не понимаю в голове, – это перемещение раздела вправо. В основном мне нужна команда dd, которая делает это. Мое мышление состоит в том, что мне нужно начинать с тыла и работать на своем фронте. Поэтому я подумал:

    • If и of являются одним и тем же разделом (помните, что уже выросли, чтобы соответствовать данным смещения) / dev / sda2
    • Bs может быть 16MiB, так как это то, что gparted сравнивается
    • Какими будут параметры, обеспечивающие копирование справа налево, чтобы данные не перезаписывались

    Я поговорил с сопровождающим gparted, и он сказал, что dd используется для достижения этого. Но я не могу понять, как это сделать.

  • Установка Windows 7 с жесткого диска USB
  • Как я могу восстановить разбитый жесткий диск?
  • Почему клонированный Windows 7 BCD содержит неполные данные (и, следовательно, предотвращает загрузку)?
  • Не удается расширить (раздел C :)
  • Изменение размера раздела в GParted (или, как я могу пройти 5 других разделов до расширения / dev / sda6)?
  • Случайно переписан неправильный диск с dd, как восстановить?
  • 2 Solutions collect form web for “Переместить данные раздела с dd вправо”

    • Какими будут параметры, которые архивируют копирование справа налево, чтобы данные не перезаписывались

    Не существует, в одной команде нет решения dd

    Также я предупреждаю вас об использовании dd для перемещения раздела, потому что если что-то не удается, у вас нет шансов восстановить данные без резервного копирования, которые вы делали до этой операции. Но если у вас есть резервная копия, операция тривиальна. Так что это было отказ от ответственности .

    Теперь интересный способ (я нахожу ваш вопрос интересным). Я не сделал этого, переместив разделы таким образом, но он может работать, поэтому доказательство концепции тестового файла:

    perl -e 'foreach $i (0..1023) { printf "%0.7i\n", $i; }' >test.dat 

    Просто сделать тестовый файл, для экспериментов

    Нам также нужна команда pv , которая может действовать как буфер для наших данных в форме: pv -B buffer_size_in_bytes

     dd if=test.dat | pv -B 1024 | dd of=test.dat seek=2 

    Размер блока dd по умолчанию – 512 байт – мы переносим данные на 2 dd-блока, поэтому достаточно буфера в 1024 байта.

     dd if=/div/sda bs=512*device block size* skip=111111*much blocks until sda2 begins* | pv -B 90000000 *have_to_fit_shift size+* | dd of=/div/sda seek=(blocks until sda2 begins + amount of blocks we shift that for) 

    После этого, если все пойдет нормально, необходимо исправить таблицу разделов.

    Но, вероятно, более распространенный способ – будет перемещать данные с помощью dd chunk куском

     dd if=/div/sda bs=1M count=100 skip=PosToRead seek=PosToWrite PosToRead -= dd_count PosToWrite -= dd_count repeat if not done 

    Также там dd, движущиеся в противоположном направлении, интересные в обработке команды dd и определении смещений

    У dd_rescue есть опция -r для изменения направления.

    Пример использования:

     partition=/dev/vdc1 disk=/dev/vdc sector_size=512 new_start_sector=4096 # opos is right after the new partition and given in bytes opos=$(($new_start_sector * $sector_size + `blockdev --getsize64 $partition`)) dd_rescue -v -r -S $opos $partition $disk 

    После этого не забудьте обновить таблицу разделов. Не обновляйте его раньше!

    Давайте будем гением компьютера.