псевдокод ниже, но как это сделать? У меня нет места для локального сохранения изображения dd ....

$ sudo dd if=/dev/sda of=/scp -P 12344 potato@10.10.45.44:/volume2/share02/01.dd

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

1 ответ1

0

Если вы можете scp , вы, вероятно, можете запустить cat после ssh .

sudo dd if=/dev/sda bs=4M | ssh -p 12344 potato@10.10.45.44 'cat > /volume2/share02/01.dd'

Это может быть проблематично, если sudo и ssh запрашивают ваши пароли. В этом случае заставьте этот вызов sudo запускаться без пароля (sudo true может быть достаточно перед тем); или sudo su - заранее, так что вы root и не нуждаетесь в sudo перед dd ; или ssh не требовать пароль (используйте аутентификацию на основе ключей).

dd пишет в свой стандартный вывод, ssh принимает его и передает удаленному cat , его вывод перенаправляется в /volume2/share02/01.dd .

Заметки:

  • При чтении /dev/sda с dd хорошо использовать bs= больше, чем по умолчанию, например, bs=4M .
  • Я бы использовал dd status=progress … или pv вместо dd (или, по крайней мере, между dd и ssh: dd … | pv | ssh …), чтобы увидеть прогресс.
  • Помните, sda не должна быть записана, пока dd работает. Например, смонтированный sda1 (если только для чтения) может сделать изображение несовместимым.
  • Вы можете уменьшить размер изображения. Прочтите этот мой ответ . В вашем случае, после того как вы подготовите весь sda , команда может быть

    pv /dev/sda | gzip -c -9 | ssh -p 12344 potato@10.10.45.44 'cat > /volume2/share02/01.dd.gz'
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .