Ответы:
Копирование из источника в цель, где на цели работает sshd:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Копирование из источника в цель через sshd_host, когда цель не работает sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Источник: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if = это источник, of = это пункт назначения, bs = это размер блока. Различные размеры блоков могут улучшить производительность. 16 обычно довольно разумная отправная точка. Вы также можете использовать count =, чтобы указать, сколько блоков копировать.
nc - -p указывает порт, который будет использоваться для служб. -l используется для запуска службы. -w устанавливает время ожидания данных в трубопроводе перед выходом.
ssh - -L устанавливает туннель на удаленном хосте. Формат аргумента, local_port:target_host:target_port
. Ваша локальная программа (nc) подключается к local_port, это подключение туннелируется и подключается к target_port на target_host.
Определенные параметры - только те, которые используются для этого. Посмотрите справочные страницы для более подробной информации.
Несколько заметок:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Если вы хотите использовать Netcat без SSH. Я предполагаю, что это самый быстрый и не безопасный способ, вы можете скопировать и восстановить весь диск следующим образом:
На компьютере A с IP 192.168.0.1
cat /dev/hdb | nc -p 9000
На компьютере B
nc -l 192.168.0.1 9000 > /dev/hdb
Помните, что в соответствии с man nc опция -l:
-l Используется для указания того, что nc должен прослушивать входящее соединение, а не инициировать соединение с удаленным хостом. Это ошибка , чтобы использовать эту опцию в сочетании с -p, -s или -z опций.
netcat не нужен.
на src машина работает:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
Я предполагаю, что ни один из разделов на SDX и SDY не смонтированы. вы можете загрузить обе коробки с помощью knoppix или другого аналогичного дистрибутива.
дд - принимает данные из , если [если не предусмотрено - принимает его со стандартного ввода], отправляет данные из [если не предусмотрено - данные передаются на стандартный вывод]. bs - размер блока ... ускорит процесс.
ssh - выполняет команду, указанную в кавычках на удаленном блоке, все данные, переданные в stdin из ssh, будут направлены на удаленный компьютер и перенесены как stdin в команду, выполняемую там.
Базовая копия с netcat описана здесь .
Если вам нужно подключить к этому SSH , вы можете использовать переадресацию портов поверх этого,
-R [bind_address:]port:host:hostport
Но, в целом, вы могли бы просто сделать SSH-передачу в первую очередь (без netcat).
Пока файловые системы отключены, dd работает хорошо.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Вам понадобится заранее установить аутентификацию с помощью hostkey, иначе запрос пароля приведет к сбою копирования.
Выполнение этого на подключенном томе приведет к плохим результатам.
Или вы можете использовать clonezilla и «смонтировать» ваше удаленное хранилище через sshfs.
Я испробовал комбинацию из приведенных выше вариантов и делюсь результатами с вами. самый быстрый и медленный, используя комбинации размера блока dd, алгоритма сжатия gzip и gzip.
Как вы можете видеть, gzip дал мне улучшение только при использовании быстрого алгоритма в сочетании с размером блока 1M.
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
Были использованы два быстрых сервера, соединенных с GigE через коммутатор Enterprise GigE с использованием локальных дисков через LVM.
Похоже, что вы используете кувалду, чтобы сломать орех здесь - или, возможно, лучшая аналогия пытается сократить ваш газон с ножницами :)
Я настоятельно рекомендую вам взглянуть на некоторые инструменты для выполнения такой работы, если у вас нет веских причин делать это самостоятельно.
Trinity Rescue Kit - это бесплатный liveCD, который поддерживает устройства обработки изображений через многоадресную рассылку и может делать то, что вы хотите (или даже любой другой человек, думающий в том же духе), не переходя на полнофункциональные системы обработки изображений.