如何通过网络 DD 到外部 HD?

SHi*_*SiT 6 networking dd

我正在尝试将位于同一网络上的 raspberry pi 上的硬盘克隆到我当前使用的计算机的外部硬盘上。但是,我在正确执行命令时遇到了问题。我试过了:

ssh user@hostip "dd if=/dev/sda" | sudo dd of=/dev/sdc
Run Code Online (Sandbox Code Playgroud)

但是提示sudo和ssh连接堆栈在一起。

小智 6

使用 netcat - 如果您不关心隐私(即您的家庭网络确实是您的),则不会给您的 CPU 带来不必要的负载

在您的主机上,运行

cat /dev/sda | nc -n ipaddr 10000

ipaddr你的 PI 的 IP 地址在哪里

在你的 PI 上,运行

nc -l 10000 >/dev/sdc

所有命令都以 root 身份运行。假定 OpenBSD netcat 是您的nc版本(可以在 LibreSSL 中找到),但其他版本也应该可以使用。


Gil*_*il' 5

一些不改变命令行的简单解决方法:

  • 使用密钥身份验证(ssh-agent如果密钥文件受密码保护)而不是 SSH 的密码身份验证。无论如何,这通常是个好主意。
  • 使用 SSH 的连接多路复用首先打开一个连接(例如ssh -o ControlMaster=yes -M -f sleep 999999),然后在不需要身份验证的从属连接中运行副本。有关示例,请参阅获取 ssh 命令的指示
  • 运行sudo true只是运行此命令之前。默认情况下,sudo 会将其验证密码的信息缓存 15 分钟(至少如果您在同一终端上执行此操作,则取决于配置)。

如果由于异常的限制性配置而确实必须在命令中键入两个密码,则可以使用命名管道来分隔命令:

mkfifo pipe
ssh user@hostip cat /dev/sda >pipe
# and in another terminal
sudo sh -c 'cat >/dev/sdc' <pipe
Run Code Online (Sandbox Code Playgroud)

此外,使用cat替代的dd,它的速度更快更可靠