Как использовать DD для клонирования раздела от образа диска?

Для заданий, которые выполняются однажды, at уже делает точно, чего Вы требуете. В любое время, atd выполнит все запланированные задания, которые проходят их запланированные даты. В частности, во время начальной загрузки, начиная atd инициировал выполнение любого задания, дата которого стала должной в течение времени простоя.

Для периодических заданий Вы могли объединить установленный график crontab запись и @reboot запись crontab. В @reboot запись, только выполните задачу, если она не была сделана за прошлые 24 часа (или безотносительно интервала, Вы предпочитаете).

42 5 * * * /usr/local/bin/myjob && touch /var/myjob/done
@reboot if [ -z "$(find /var/myjob.done -mtime 1)" ]; then /usr/local/bin/myjob && touch /var/myjob/done; fi
8
21.04.2013, 00:22
5 ответов
# losetup --find --show --partscan --read-only 2013-02-09-wheezy-raspbian.img
/dev/loop7
# dd if=/dev/loop7p2 of=/dev/narnia bs=1M

Если --partscan не работает, можно также использовать один из:

# partx -a /dev/loop7
# kpartx /dev/loop7

или подобные решения для отображения раздела.

Необходимо, вероятно, смонтировать его сначала только, чтобы видеть, является ли это правильная вещь или что.

Конечно, можно также считать вывод fdisk и дать dd skip=131072 или безотносительно непосредственно, т.е. заставляют его пропустить это много блоков входа, таким образом, это начинает читать в том, где раздел расположен; но более хорошо видеть фактические разделы с циклическим устройством.

7
27.01.2020, 20:12
  • 1
    Ваш losetup команда не работала - она сказала нераспознанную опцию --find. Я удалил это, это сказало, что не распознало --show. Взлетание, которое заставило это жаловаться на --partscan, в которой точке я понял, что команда не собиралась делать что-либо для меня в ближайшее время. Я решил попробовать другие, но обоих partx и kpartx возвратите "команду, не найденную". –  JamesTheAwesomeDude 21.04.2013, 01:45
  • 2
    я просто работал бы dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc skip=122880, но это возвращается dd: ‘2013-02-09-wheezy-raspbian.img’: cannot skip: Invalid argument. –  JamesTheAwesomeDude 21.04.2013, 01:49
  • 3
    skip зависит от bs, таким образом, если Вы использовали bs=1M (или имейте псевдоним, который делает это), это объяснило бы, почему он не работает. попробуйте bs=512. Кроме того, почему 122880, когда fdisk говорит 131072? Также мой losetup losetup from util-linux 2.22.2. то же для partx. kpartx от многопутевых инструментов (используемый картопостроитель устройства). –  frostschutz 21.04.2013, 02:49
  • 4
    kpartx для LVM. partprobe также сделает задание, от разделенного пакета. –  psusi 21.04.2013, 05:18
  • 5
    @frostschutz, Который составлял 12 280 байтов от запуска файла изображения. –  JamesTheAwesomeDude 23.04.2013, 00:30

Что-то вроде этого должно работать:

dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror

если = устанавливает изображение, Вы хотите клонироваться

из = устанавливает целевой раздел, где Вы хотите клонировать изображение

0
27.01.2020, 20:12
  • 1
    я получил ожидаемую погрешность: dd: opening ‘2013-02-09-wheezy-raspbian.img2’: No such file or directory –  JamesTheAwesomeDude 21.04.2013, 01:31
  • 2
    сделал Вашу замену/path/to/2013-02-09-wheezy-raspbian.img2 Вашим реальным путем к файлу изображения? :| –  fromnaboo 21.04.2013, 11:39
  • 3
    **** **** Да, я просто добавил 2 в конец, как Вы сказал. –  JamesTheAwesomeDude 23.04.2013, 00:28
  1. Смонтируйте образ как устройство обратной связи: losetup -fP yourImage.img
  2. Теперь вы можете получить доступ к каждому разделу образа напрямую. Если вы должны использовать dd , вы можете сделать dd if = / dev / loop0p1 of = image.img , но я думаю, что вам бы больше понравился cat . В корневой оболочке просто выполните cat / dev / loop0p1> image.img . В обоих примерах предполагается, что вам нужен первый раздел, а назначенное вам устройство обратной петли было / dev / loop0
  3. После того, как вы закончили с устройством обратной петли, вы можете отсоединить его с помощью losetup -d / dev / loop0 . Еще раз, это предполагает, что / dev / loop0 является вашим устройством обратной связи.
0
27.01.2020, 20:12

Вы можете сделать:

sudo partx --add -v 2013-02-09-wheezy-raspbian.img 
# time sudo dd if=/dev/loop0p1 |pv -s 80M |sudo dd of=/dev/sdc1
time sudo dd if=/dev/loop0p2 |pv -s 4G |sudo dd of=/dev/sdc2
sudo partx --delete -v /dev/loop0
0
27.01.2020, 20:12

Вы можете скопировать только второй раздел в отдельный образ с помощью этого

dd if=2013-02-09-wheezy-raspbian.img of=second.img bs=512 skip=122880

и после этого можно скопировать вместо раздела на диске

dd if=second.img of=/dev/sdc2 bs=512

или даже одной командой

dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880

Просто убедитесь, что вы размонтировали /dev/sdc2 перед записью в него.

0
27.01.2020, 20:12

Теги

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