是否可以将 qemu-img 导入 SSH 目标?

是否可以将 qemu-img 导入 SSH 目标?

我尝试了以下命令,但目标上只创建了一个空文件,并且命令保持打开状态

qemu-img convert -f raw -O vmdk /dev/sda1 - | ssh foo@bar "cat > /home/foo/foobar.vmdk"

注:sshfs不可用。

答案1

qemu-img不幸的是,由于输出文件需要可查找,因此无法将输出写入管道

参考:https://www.mail-archive.com/[电子邮件保护]/msg05176.html

答案2

单独使用是不可能做到这一点的qemu-img(如https://serverfault.com/a/1113484/217241),但您也可以使用libguestfs 命令附带的qemu-nbd(网络块设备) 实用程序。在 Debian 和派生发行版中,可以在包中找到。qemu-imgnbdcopynbdcopylibnbd-bin

nbdcopy -- [ qemu-nbd -f qcow2 myVM.qcow2 ] - | ssh user@otherhost cat '>' raw-image-elsewhere

相反的情况是:

ssh user@otherhost cat raw-image-elsewhere | nbdcopy -- - [ qemu-nbd -f qcow2 local.qcow2 ]

事实上nbdkit可以使用和的组合qemu-img,但是 nbdkit 作者建议改用nbdcopywith qemu-nbdhttps://rwmj.wordpress.com/2014/10/14/streaming-nbd-server/

nb 顺便说一句,如果您受到网络带宽的限制,那么您可能还需要使用标志-C来 ssh 以压缩传输中的数据,或者通过管道zstd或类似方式进行传输。

相关内容