我想将 12.04 迁移到另一台机器。我发现dd 的方式希望它能为我工作。问题是我必须以某种方式连接两个驱动器才能进行实际克隆。我正在尝试 NFS。当我写入/etc/exports
:
/dev/sda1 10.42.0.16(rw,async,subtree_check)
并调用exportfs -a
我最终得到以下错误:
exportfs: /dev/sda1 is neither a directory nor a file. Remote access will fail
有什么线索可以解决此问题吗?这是配置问题还是 NFS 是死路一条,我必须使用其他方法?
答案1
在接收端:
nc -l 5678 | sudo dd if=/dev/stdin of=/dev/sda
然后在发送方端:
sudo dd if=/dev/sda of=/dev/stdout | nc 1.2.3.4 5678
这会sda
通过网络将内容从一台 PC 复制到另一台 PC,复制到 IP 1.2.3.4 和端口 5678。请确保安装其中一个nc
软件包(nc
如果尚未安装,只需在终端中运行,您就会得到建议。)
另外,请确保任一sda
驱动器上的任何卷均未安装文件系统,因此如果不确定,请在两端运行实时 CD。
答案2
我无法发表评论,但我想补充一下@gertvdijk 的答案,你可以使用| pv |
它来显示进度报告也是明智的做法添加显式缓冲区大小bs=8M
(例如)以加快速度(默认值为 512 字节,非常小)。大小取决于您的硬件以及您是在本地千兆网络还是较慢的连接上进行克隆。接收端的最终命令可能如下所示(如果需要,请添加 sudo):
nc -l 5678 | dd if=/dev/stdin | pv | of=/dev/sda bs=8M
[编辑]
刚刚注意到,从 2.1 版开始,dd 有状态显示。只需添加status=progress
:
-1. 接收者 nc -l 5678 | dd if=/dev/stdin of=/dev/sda bs=8M status=progress
-2. 发件人 dd if=/dev/sda of=/dev/stdout bs=8M | nc 1.2.3.4 5678
我刚刚使用上述命令在 37 小时(60mb/s)内通过 1 Gbit 本地网络克隆了一个 8TB 驱动器。