Answers:
如果您打算通过SSH将远程计算机的HDD A备份到本地计算机的HDD上的单个文件中,则可以执行以下操作之一。
从远程计算机运行
$ dd if=/dev/sda | gzip -1 - | ssh user@local dd of=image.gz
从本地计算机运行
$ ssh user@remote "dd if=/dev/sda | gzip -1 -" | dd of=image.gz
$ ssh skinner "dd if=/dev/sda5 | gzip -1 -" | dd of=image.gz
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 22.7608 seconds, 4.7 MB/s
116749+1 records in
116749+1 records out
59775805 bytes (60 MB) copied, 23.9154 s, 2.5 MB/s
$ ll | grep image.gz
-rw-rw-r--. 1 saml saml 59775805 May 31 01:03 image.gz
ssh
另一个终端登录,然后ls -l
查看文件的大小。您可以pv
用来监视大型dd操作的进度,例如,对于上面的远程示例,您可以执行以下操作:
$ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
向发送“ SIGUSR1”信号dd
,它将打印统计信息。就像是:
$ pkill -USR1 dd
pv
在本地计算机上使用的示例吗?谢谢。
status=progress
选择。因此,您不再需要pkill -USR1 dd
从另一个终端运行。
您收到的错误是由于远程使用sudo(系统会要求您输入密码,但您没有输入tty的密码)。另一方面,作为普通用户,您通常不能简单地dd
按其他答案中的建议使用(您没有对设备的必需权限)。您可以通过赋予自己在dd
没有密码的情况下以sudo 身份执行的权限来解决该问题。您可以通过编辑sudoers文件(在远程上!)来做到这一点:
sudo visudo
添加以下行:
userfoo ALL=(ALL) NOPASSWD: /bin/dd if=/dev/sdX
现在您可以发出:
ssh userfoo@host "sudo /bin/dd if=/dev/sdX" | dd of=test.dd
它应该工作。您可以在sudoers中创建一个更通用的条目,允许您dd
使用任何参数运行,但是将这种自由权限保持在所需的最低限度是比较明智的。
ONE
的硬盘驱动器备份到远程计算机TWO
的存储中),如下所示:ssh root @ TWOdd of=/root/Public/ONE/sda1.img
<br /> 409600 + 0条记录中的409600 + 0条记录已复制209715200字节(210 MB),0.894929 s,234 MB / s不会分配伪终端,因为stdin不是终端root @ TWO的密码:问题在于该/root/Public/ONE/sda1.img
文件是在上创建的ONE
,而不是在TWO
预期的位置上创建的。我该如何解决?