我需要将一台笔记本电脑的驱动器克隆到另一台基本相同的笔记本电脑上。
它们是 M.2 PCIe 驱动器,因此即使我想打开笔记本电脑,我目前也找不到它们的 USB 连接器。
因此我需要将源映像传输到外部驱动器,然后在新计算机上播放该图像。
对近 1 TB 的数据进行这样的处理确实需要花费相当长的时间 - 而且我还必须为图像找到空间。
如何通过网络将源笔记本电脑克隆到目标笔记本电脑而不创建映像的中间副本?我可以在两台笔记本电脑上启动到 USB。
答案1
无需为图像寻找存储空间 - 只需加载 Linux Live CD(或 USB 记忆棒),然后使用netcat
。
在已设置并准备就绪的计算机上运行:
sudo dd if=${SOURCE_DISK} bs=4M | gzip | nc -l 27015
然后,在将接收图像并成为克隆的计算机上,运行以下命令...(我觉得我应该注意强制性的这将销毁所有数据)
nc ${IP_OF_SERVER} 27015 | gzip -d | sudo dd of=${DEST_DISK} bs=4M
这里,${SOURCE_DISK}
和${DEST_DISK}
需要与相关磁盘进行交换 - 例如:/dev/sda
或/dev/nvme0n1
。
另外,${IP_OF_SERVER}
需要替换为第一台计算机的IP。
这将在两个 M.2 驱动器之间直接传输数据。
为了获得加分,您可以替换源dd
以pv
关注进度...或SIGUSR1
向dd
实例发送更新。
笔记:
- 这不包括您可能需要对(未指定的)操作系统进行的任何修改...Windows 可能会对激活很挑剔,而 Linux 可能会对网络接口之类的东西感到怀旧......
- 如果目标 SSD 小于源 SSD,则这种基本方法不适用。
- 如果您只对特定分区感兴趣,请检查大小,并在设备名称上使用
p1
/ / 等后缀。p2
答案2
对于 gnu netcat,“服务器”行中缺少“-p”
sudo dd if=${SOURCE_DISK} bs=4M | gzip | nc -l -p 27015
对于 GNU netcat,您必须使用 -p 选项来确定本地监听端口。当您使用 SysRescue CD 时,这可能很重要。