我正在尝试将位于同一网络上的 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 中找到),但其他版本也应该可以使用。
一些不改变命令行的简单解决方法:
ssh-agent如果密钥文件受密码保护)而不是 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)