如何在本地计算机上使用 SSH 创建远程磁盘的备份并将其保存到本地磁盘?
我尝试过以下方法:
ssh [email protected] "sudo dd if=/dev/sdX " | \
dd of=/home/username/Documents/filename.image`
但是,我收到以下错误:
不存在 tty 且未指定 Askpass 程序
答案1
如果您的目的是备份远程计算机的硬盘驱动器通过 SSH 连接到本地计算机 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
使用 的
dd
进度开关,status=progress
参考
答案2
您收到的错误是由于远程使用 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
,但更明智的做法是将此免费权限保持在您需要的最低限度。
答案3
我刚刚在虚拟 Linux Mint 盒子上使用了修改后的版本来克隆老化 RedHat 服务器上的物理硬盘驱动器。
我在虚拟机上以 root 身份运行了以下命令:
ssh [email protected] "dd if=/dev/cciss/c0d0" | dd of=/dev/sdb
- 192.168.1.5 是物理 Red Hat Enterprise Linux 2.1 机器。
- /dev/sdb 是一个新的虚拟磁盘,克隆完成后,它将成为旧的即将消亡的物理盒的虚拟版本的基础。
答案4
我最近也遇到了类似的情况。对我来说不同的是
- 由于安全措施,
root
ssh
访问被禁用 sudo
未安装(故意)
所以我所做的是:
- 检查设备文件权限(grep 查找适当的块设备命名方案(、、
hd
等))sd
nvme
user@machine:~$ ls -la /dev/ |grep sd
brw-rw---- 1 root disk 8, 0 Nov 22 13:36 sda
brw-rw---- 1 root disk 8, 1 Nov 22 13:36 sda1
brw-rw---- 1 root disk 8, 2 Nov 22 13:36 sda2
brw-rw---- 1 root disk 8, 5 Nov 22 13:36 sda5
- 将用户添加到
disk
组中
root@machine:~$ usermod -aG user disk
- 然后以您已经尝试过的相同方式运行
dd
(但没有sudo
)
ssh [email protected] "dd if=/dev/sdX " | dd of=/home/username/Documents/filename.image
(或者也像其他人建议的那样链接gzip
)