我想通过Linux上的sshencryption通道批量复制东西(使用dd
格式的reimage磁盘)和netcat从主机A到B。
我应该在两端input什么命令?
从源代码复制到目标已经运行sshd的目标:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
目标未运行sshd时,通过sshd_host从源复制到目标。
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
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=/dev/sda | nc -w 3 localhost 62222
dd – if =是源, =是目标, bs =是块的大小。 不同的块大小可能会提高性能。 16通常是一个比较合理的出发点。 您也可以使用count =来指示要复制的块数。
nc – -p指示用于服务的端口。 -l用于启动服务。 -w设置退出前等待数据的时间。
ssh -L在远程主机上build立隧道。 参数的格式是local_port:target_host:target_port
。 你的本地程序(nc)连接到local_port,这个连接隧道连接到target_host上的target_port。
定义的选项只是用于此的选项。 请查看手册页以获取更多详细信息。
一些注意事项:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
如果你想使用没有ssh的netcat。 我认为这是最快的方式,而不是安全的,你可以像这样复制和恢复整个磁盘:
在IP 192.168.0.1的计算机A上
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或其他类似的现场发行版启动这两个盒子。
dd – 从if [如果未提供 – 从标准input中]获取数据,将数据发送到[如果未提供 – 数据发送到标准输出]。 BS – 块大小…将加速事情。
ssh – 执行在远程框中引用提供的命令,所有input到ssh的数据将被隧道传输到远程计算机,并作为stdin命令执行在那里执行。
主机A是映像的主机,主机B是映像存储的映像:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
恢复到磁盘只会交换这两个。
这里描述了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
您需要提前进行主机密钥身份validation设置,否则密码提示将导致复制失败。
在安装量上做这个会产生不好的结果。
或者,您可以使用clonezilla并通过sshfs“挂载”远程存储。
我尝试了上面提供的选项的组合,并与您分享结果。 使用dd块大小,gzip和gzip压缩algorithm的组合最快到最慢。
正如你可以看到gzip只使用快速algorithm和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交换机通过LVM使用本地磁盘与GigE连接。
看起来你正在用大锤在这里破解一个坚果 – 或者更好的比喻是用剪刀砍掉你的草坪:)
我强烈build议你看看这样的工作,除非你有很好的理由去做这个工作。
Trinity Rescue Kit是一款免费的liveCD,它支持通过多路广播进行成像驱动,并且可以做你想做的事情(或者其他任何人在同一线路上思考),而不需要全面的成像系统。