我遇到过这种情况几次:我需要更换一个驱动器,因为我需要更多的空间,它有问题,需要移动到一个新的盒子里,等等。
将数据从一个分区大小复制到另一个分区大小的最佳方法是什么(假设目标有足够的空间)?
如果它是不同的文件系统(例如 ReiserFS 到 ext4)怎么办?
如果它只是现有系统上的新驱动器,我如何确保不需要重新安装即可使一切正常运行?
更新- 许多选项都非常可行,并且我已将这个问题更改为社区维基,因为我认为没有“正确”的答案。
答案1
答案2
我过去使用的解决方案是tar
。如果分区的大小和类型完全相同,则可以使用dd
。
以下是我对这一难题的回答:
使用 live cd 发行版启动,例如斯莱克斯
验证所需的分区是否在新驱动器上
确保新旧驱动器都已安装,
/tmp/driveold
例如/tmp/drivenew
从终端运行以下
tar
命令:(tar cp --xattrs /tmp/driveold/path) | (tar x /tmp/drivenew/path)
对每个需要复制的分区重复上述步骤
这对我曾经尝试过的每个分区都有效(不包括/boot
,我确保分区相同,并使用dd
)。
答案3
这是我喜欢 LVM 的原因之一。只需将新磁盘添加到卷组,pvmove
将逻辑卷从旧磁盘添加到新磁盘,从卷组中删除旧磁盘,然后从系统中删除。如果您要替换的是启动磁盘,那么您还需要更新启动加载程序。
答案4
另一个选项是从 liveCD 启动并将旧驱动器安装为只读。这是为了防止 livecd 在复制过程中更改它。然后rsync -avz /mnt/olddisk/ /mnt/newdisk
(olddisk 后面的斜杠是必需的)。正如其他人提到的,如果这是正在扩展的启动盘,则需要重新运行grub-install <new device>
才能启动。