如何轻松克隆整个系统?

我正在使用Ubuntu 14.04 LTS,并且遇到了一些硬盘问题。我购买了一块相同大小的新硬盘(1TB),并打算将所有的数据(软件、工作文件、照片等)迁移到新硬盘上。
有什么最简单的方法可以做到这一点吗?

3你可以使用gparted从Live CD复制粘贴分区。 - Panther
你可以使用Clonezilla(GPL)来进行克隆。http://clonezilla.org/ - Bruni
10注意:无论使用哪种方法进行复制,最安全的做法是在已从Live CD/USB媒体引导的系统(硬件)上进行。在运行于该驱动器上且带有可疑硬盘的情况下复制活动系统可能会导致一些你可能并不立即注意到的问题。 - david6
通过Gparted来拷贝,好像是个不错的方法。 - linjiejun
4个回答

最简单的方法是使用之前建议的Gparted从Live CD/USB进行操作。要做到这一点,请查看Gparted手册中的“复制和粘贴分区”部分manual。为了重现链接中给出的步骤:

复制分区:

  1. 选择一个未挂载的分区。请参阅“选择分区”部分。

  2. 选择:分区 → 复制。应用程序将该分区标记为源分区。

粘贴分区:

  1. 在磁盘设备上选择一个未分配的空间。请参阅“选择未分配空间”部分。

  2. 选择:分区 → 粘贴。应用程序将显示粘贴 /path-to-partition 对话框。

  3. 如果需要,您可以调整分区的大小和位置。请参阅“指定分区大小和位置”部分。

  4. 如果需要,您可以指定分区的对齐方式。请参阅“指定分区对齐方式”部分。

  5. 点击粘贴。应用程序将在待处理操作窗格中显示复制分区操作。


感谢您帮助我解决这个问题,但是我想我会使用@Frantique在下面建议的手动简单方法:sudo cat /dev/sda >/dev/sdb。我知道这样做有风险,但对我来说似乎是最容易的方式。 - Adascalitei Lucian
是的,这是你的选择。也许其他人会觉得这种方法更容易 :) 当使用dd(甚至cat)时要小心,如果不谨慎使用可能会弄乱事情。 - Ron
1@AdascaliteiLucian 不要执行cat命令(请参考上面的评论)。如果你想加快速度,可以使用更大的缓冲区大小(约64MB)来执行dd命令。 - Fabby
“cat”比“dd”更安全和更简单。没有任何理由不使用它 - terdon
在实际克隆之前有一个e2fsck,它没有进度条,可能需要几个小时。 - Wolfgang Fahl
1Gparted:有人能否澄清一下分区中的所有内容是否完全可访问(目录、文件和Veracrypt容器的权限);以及是否可以使用所有分区将相同的计算机加载到裸硬件上重新创建? - CloudE11
如果我这样做,TMP安全芯片的驱动密码保护和锁定到硬件的功能也会被复制吗?也就是说,原始驱动器只能在这台计算机上访问,那么新的驱动器现在也是如此吗? - Rabbit

从一个活动系统启动,通过USB(或另一条SATA电缆,取决于您的硬件)插入新的硬盘驱动器,并启动“终端”。
检查旧硬盘的路径(可能是/dev/sda),以及新硬盘的路径(/dev/sdb),然后输入以下命令:
sudo dd if=/dev/sda of=/dev/sdb status=progress

请注意,这将需要很长时间。您可以在终端上监控进度。
另一种可能性是(甚至比“dd”更快):
cat /dev/sda >/dev/sdb

2我猜这是我会选择的方法,说实话,我更喜欢使用shell而不是Gparted。 - Adascalitei Lucian
2Lucian:是的,这是最好的解决方案。 ;) - Frantique
6使用较大的块大小会加快速度。例如,sudo dd if=/dev/sda of=/dev/sdb bs=1024k - David Purdue
大卫:是的,确实,既然我们对硬件一无所知,最好慢慢来。 - Frantique
1嗨,这个好消息啊:)我没想到呢:)不过无论如何,我会保持这个帖子的开放,以防我遇到任何问题。理论上,我想要替换一块已经有点问题的1TB WD Blue硬盘,我认为它的磁头可能出了问题,所以我想用一块1TB WD Black硬盘来替代它。我不想再重新安装所有的东西,因为那需要花费我一整天的时间来调整所有设置,所以我更倾向于这样做。大概估计,复制数据可能需要我4到5个小时左右。再次感谢你的帮助。 - Adascalitei Lucian
不会有问题的。两个月前我也是这样做的。一切都很好。 - Frantique
1@Frantique:cat命令不会保留任何文件的安全设置... 因此它只适用于root用户,其他用户无法使用! - Fabby
此外,它不会接受任何块大小(但对于“cat”来说加1分:) - Ron
2这应该可以工作,但请注意你正在复制每个块。如果你在虚拟机环境中克隆一个稀疏分配的磁盘,你将会复制所有内容,包括空白空间,从而削弱了稀疏分配的好处。对于这种情况,使用gparted进行复制/粘贴(在将源缩小到接近最小尺寸后)会更好。或者可以将文件克隆到新创建的分区上。 - David C.


8虽然你的回答是100%正确的,但如果那个链接被移动、更改、合并到其他链接或者主站点消失了,它也可能变得100%无用... :-( 因此,请[编辑]你的回答,并将链接中的相关步骤复制到你的回答中,从而保证你的回答在这个网站的整个生命周期内都是100%有效的! ;-) 你可以始终将链接留在回答底部作为材料的来源... - Fabby
3你能详细解释一下吗?比如说,可以概述一下你如何使用Clonezilla来克隆一个分区... - Oli
6不要那么刻薄,Fabby: Clonezilla 存在已经很久了(我想近10年了)。 如果网站搬迁了,你总是可以通过谷歌搜索到它。 完整的手册和快速指南都可以在网站上找到。 你希望包括哪些下载站点:osdn、sourceforge?还是 GitHub 仓库?无论如何,当项目被放弃到连网站都不能工作时,最好不要使用它,除非你读过源代码。 - jringoot
2我同意jringoot的观点。如果链接不可用,答案本身就没有意义了。 - user1182988

我创建了一个bash脚本,以最简单的方式使用rsync自动化整个克隆过程到另一个磁盘。
该脚本会处理所有事情,如更改fstab文件,在新磁盘上安装适当的grub并更新它以创建新的grub菜单。
您只需使用例如gparted准备适当的分区即可。
有关更多详细信息,请访问其存储库https://github.com/thiggy01/clone-ubuntu

1你很棒地克隆了我写的克隆脚本。感谢你在你的GitHub上给予了我的功劳。 - WinEunuuchs2Unix
很高兴你喜欢。我只是需要一个工具将我的电脑从硬盘升级到固态硬盘。然后,我发现了你的脚本,并且由于你没有限制它的使用,所以我决定自定义它以自动化整个过程。 - thiggy01
可以确认脚本有效,我用它将旧硬盘克隆到新的固态硬盘上。脚本在检查先决条件方面做得非常出色,我能够立即从固态硬盘启动。唯一的问题是,我不得不手动更改/etc/fstab中/分区的UUID - 出于某种原因,这个没有被更改。 - Tyreal