下面是伪代码,但该怎么做呢?我没有空间在本地保存 dd 图像……
$ sudo dd if=/dev/sda of=/scp -P 12344 [email protected]:/volume2/share02/01.dd
我不知道如何执行它或者在本地包装它以解决我尝试 dd 图像的系统上的存储空间不足的问题。
答案1
如果你scp
可以大概可以追cat
你ssh
。
sudo dd if=/dev/sda bs=4M | ssh -p 12344 [email protected] '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 [email protected] 'cat > /volume2/share02/01.dd.gz'