我使用的是 Linux (Ubuntu),有人告诉我可以使用下面描述的方法将系统的硬盘克隆到另一个硬盘 - 插入一台新机器。 (无需从 Live CD 启动)
它假设系统的磁盘是/dev/sda
,以 root 身份挂载的分区是/dev/sda1
,并且将其克隆到的空磁盘是/dev/sdb
。
echo u > /proc/sysrq-trigger
重新挂载所有文件系统,包括以 root 只读方式挂载的文件系统。
e2fsck -fy /dev/sda1
更正了因强制 R/O 重新挂载而导致的文件系统错误。
dd if=/dev/sda of=/dev/sdb
将磁盘克隆到空磁盘。
e2fsck -fy /dev/sdb1
修复新克隆的文件系统。在这一步,它通常会告诉您固定的块校验和。
reboot -f
重新启动系统。在此步骤中,我断开新克隆的磁盘,并将其插入新电脑。
我已经使用此方法两次,并且所有机器都工作正常,但我担心这样做可能会导致一些危险的文件系统问题?如果是,为什么?我以后应该避免使用这种方法克隆硬盘吗?
答案1
执行此操作的最佳方法是创建文件系统的 LVM 快照,然后使用该快照作为制作副本的源。这有两个好处:
- 完成后不需要重新启动系统
- 它刷新并同步文件系统,这样您就不会出现不一致/损坏的元数据
如果做不到这一点,如果您已经愿意重新启动系统来制作副本,那么您可以完全关闭并启动到单用户模式(single
从 grub 添加到内核命令行,ro
应该已经在那里),然后使用dd
复制源磁盘到目标。在单用户模式下,根分区已经以只读方式安装,因此不会出现磁盘(元)数据不一致的问题。
答案2
我不确定文件系统问题,但我通常只是使用 rsync 来“克隆”我的硬盘。这样做的优点是从空文件系统(可能是其他大小或类型)开始,因此所有文件都将在复制过程中进行碎片整理。在将所有内容复制到新磁盘之前,我只是关闭重要的服务,例如 fetchmail/samba/任何写入我关心的数据的服务,这样我就不会丢失任何数据。具体命令:
rsync -axAX / /mnt/newDisk/
.这不会保留硬链接,如果这对您很重要,您需要添加 -H。