将整个Linux安装移至另一个驱动器


55

我拥有Ubuntu 14.04,其中包含很多软件包和与工作相关的东西,对此我感到非常满意。它安装在120GB的主SSD驱动器上(安装ubuntu时选择了“ /”,因此我相信所有内容都应该在该驱动器上)。它显示为/ dev / sda

现在,我在计算机上添加了另一个240GB的SSD。我目前没有任何其他存储介质(例如,外部硬盘驱动器)。

由于新的240GB驱动器显然具有更大的容量和更快的速度(比我的120GB驱动器更新一代),因此我想将Linux迁移到该新驱动器上。这个新驱动器显示为/ dev / sdb,目前还没有格式化或其他任何内容(我已经解包并立即插入我的PC:P)

如何安全地将Linux安装移动到新驱动器?

我可以更改SATA电缆,以便在必要时新驱动器显示为/ dev / sda。

如果有帮助,这是“ fdisk -l”的输出:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00076d7a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   226064383   113031168   83  Linux
/dev/sda2       226066430   234440703     4187137    5  Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5       226066432   234440703     4187136   82  Linux swap / Solaris

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

4
听起来您打算现在同时使用它们。如果是这样,您应该考虑只使用较新的,较大的/home而不是整个系统。这应该是一个更容易的更改(只需将所有内容移至/ etcs / fstab并添加一行),并且大多数大文件可能会进入您的主目录(并因此进入更大的磁盘)。
凯文

Answers:


35

您可以将CLONEZILLA用于此目的。

Clonezilla是一个免费的分区和磁盘映像/克隆工具,可用于以高度压缩的方式备份所有数据(整个磁盘或分区),然后将其克隆回硬盘以使其处于完全相同的状态。在大多数情况下,这比安装操作系统要快。

在此处输入图片说明

您也可以使用“设备-设备”选项,但我对此并不熟悉。

您可以在此处找到有关Clonezilla的详细指南:http : //clonezilla.org


1
我建议您之前观看以下两个教程视频:youtube.com/watch?v=41tTudaQb0Iyoutube.com/watch?v=LS6VhLDw-io
Severus Tux,2016年

1
这也是一个不错的选择。但是我懒得创建clonezilla棍子;-)
Pilot6 '16

我发现clonezilla不会复制mbr,因此整个磁盘映像以及与gparted一起工作应该可以解决问题
adampski

1
哇!听到这个消息很高兴;-),启动时间,这是因为UUID更改了,即新的UUID和旧的重要分区(home,Swap)已损坏。要更正此问题,请按照此处给出的说明进行适当的更改askubuntu.com/a/737340/497359如果发现任何问题,请对其进行评论。
西弗勒斯·图克斯

1
@adampski:这似乎是Clonezilla 2.4.5中的错误。作为一种解决方法,可以使用Clonezilla 2.4.2或Clonezilla 2.4.2 Server Edition(DRBL),直到修复该问题为止。:)
cl-netbox

40

可以通过几种方法来完成。但是最简单的方法是将所有文件从旧驱动器复制到新驱动器。

  1. 在新驱动器上创建ext4分区和交换分区。

  2. 从LiveUSB引导。

  3. 将旧的Ubuntu分区挂载到某个目录,将新的Ubuntu挂载到其他目录。

  4. 使用cp -a命令将所有文件从旧文件复制到新文件。

  5. 将grub安装到新驱动器上

  6. /etc/fstab使用新的UUID 更新。

如果不清楚,我可以添加一些解释。


1
+1-也可以避免从LiveUSB引导,而在从原始驱动器引导时执行所有操作,进行所有更改,重新引导,瞧。
谢尔盖

1
@Étienne:不要复制这些目录(也要复制/dev),只需在目标驱动器上创建空目录,并在其上设置与源驱动器相同的所有者/权限。
谢尔盖

10
我最终使用:sudo rsync -a / /mnt/linux/ --exclude sys --exclude proc --exclude dev --exclude tmp --exclude media --exclude mnt --exclude run 然后 sudo mkdir sys proc dev tmp media mnt run
艾蒂安

1
@Étienne您可以编辑--exclude-comment吗?如果您按照编写的方式进行操作,那么/ var / tmp也将被排除(对我而言),在克隆之后,systemd-resolved.service会错过它,导致名称解析无法正常工作...我认为应该是--exclude / tmp --exclude / proc等。谢谢
swe

1
@swe我不应该发表评论,而是建议对原始答案进行修改。
艾蒂安

20

如果您有时间想安全一点:

$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync

命令说明:

  • if是输入,of目的地
  • bs设置块大小。这是dd将要读取和写入的块的大小。更高的块大小通常意味着更高的性能,但是如果输入磁盘有错误,也意味着更多的数据损坏,请参阅:dd上的archwiki
  • noerror 继续出现读/写错误。
  • sync 如果发生错误,则同步偏移量。

基本上,这将创建磁盘sda的映像并将其写入sdb(相同的分区布局等)。当然,由于文件不可知,它将写入整个1​​20GB。因此,如果只使用磁盘的一小部分,则非常安全,但不是最快的。但是,如果输入磁盘已满,则可能会更快。

但:

  • 之后,您可能想要调整分区的大小,否则您将无法利用额外的空间。
  • 在任何情况下,都可能需要编辑/ etc / fstab文件。
    如果使用硬件ID识别磁盘,就是这种情况。

2
您的dd命令将永远运行。考虑添加bs=1M到它
Dmitry Grigoryev

Afaik块大小不需要在SSD上为100万,但我会仔细研究并进行更新
larkey

限制不属于SSD技术,而是bs默认值为512字节。
德米特里·格里戈里耶夫

1
bs的扩展答案,多谢单挑
larkey

1
感谢您提供详细的答案...我学到了一些东西!但我决定使用clonezilla,然后再调整分区的大小。
Saeid87 '16

5

切换到新硬盘时的方式是:

  • 在新驱动器上创建我想要的分区布局
  • 从Live CD / USB引导或安装,救援等。
  • 挂载要复制到的旧硬盘分区,例如, /mnt/a
  • 挂载新的硬盘分区以接收文件,例如 /mnt/b
  • cp -a或使用tar将文件从复制/mnt/a/mnt/b
  • 在新磁盘上安装引导加载程序(lilo或grub)¹
  • 更新/etc/fstab(您可能想blkid用来标识新的UUID)
  • 重新启动并测试一切正常

注意¹:

使用以下命令检查所有硬盘和分区:

sudo fdisk -l 

现在记下安装了Ubuntu的分区,如下所示: /dev/sda1

将分区安装在需要安装GRUB 2的位置(硬盘分区),文件系统将显示在Nautilus中。现在,我们必须安装正确的硬盘分区才能对实际的硬盘MBR进行更改。为此,我们需要:

sudo mount /dev/sda1 /mnt
mount

现在将分区挂载到其他位置

sudo mount /dev/sda1 /mnt/boot

/dev启动的实时映像上的/dev文件夹到安装到的分区上的文件夹创建牢不可破的链接/mnt

sudo mount --bind /dev /mnt/dev/

现在我们必须将根目录从实时CD根目录(/)更改为已挂载分区的根目录

sudo chroot /mnt

现在,您位于新的根外壳中,其中已装入的分区是新的根。您可以验证此输入ls。由于我们现在位于已安装的分区中,因此我们可以继续安装GRUB 2:

sudo grub-install /dev/sda 

安装现在应该完成,没有错误

通过键入exit或按Ctrl+ 退出CHROOT Shell,D 将您带回到Live CD / USB Shell

卸载之前已经挂载的分区,以进行干净的重启:

sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt

并从硬盘上卸下Live CD或USB记忆棒后重启并重启:

sudo reboot

资源


@ baobab33:您可以在此处将说明复制粘贴到此站点,然后进行属性定义。您不能仅链接到外部源。请同时使用上述更正来更新源。
Fabby

4

与其他答案不同,这允许您克隆Linux安装并在不影响当前安装的情况下将其添加到Grub菜单中。此外,它会自动/etc/fstab为您修改并更新grub启动菜单。

提供菜单来帮助您选择要克隆到的正确分区。来自分区的克隆是您当前引导的分区。

rsync如果您选择重新克隆分区,则用于获得最佳速度。如果升级失败,您等待错误修复并想再次运行升级,这将非常有用。同样,您在升级过程中可能选择了错误的选项,并希望再次进行。

完整的脚本可以在这里找到:用于将Ubuntu克隆到新分区以测试18.04 LTS升级的Bash脚本,屏幕如下所示:

clone-ubuntu.png


0

我决定做一个与此职位相关的实验。

我购买了联想ThinkCentre。它具有256 GB的SSD和1 TB的HDD(旋转器类型-快速,但不如SSD快)。

当我安装Linux Mint 19.2(LM19.2)时,它将它安装在1 TB驱动器上。SSD最终无法恢复,因此我购买了新的Kingston 240 GB SSD。

我本打算将LM19.2安装到新的SSD上,但是似乎必须有一种方法可以将我开发的LM19.2映像从1 TB驱动器转移到新的SSD上。

我找到了这篇文章,尽管上面有一些可靠的建议,但我处于一种尝试的模式。以下是我所做的工作,非常有效。

  1. 我使用GParted在SSD上创建了与1 TB HDD相同类型的分区表和分区。
  2. 我在LM19.2 1 TB HDD上执行了EVERYTHING的TimeShift(Ubuntu / Linux Mint中的新工具)快照。
  3. 我将该快照还原到了SSD上。
  4. 完成上述步骤(甚至可以同时执行1和2和3)后,我重新启动,确保选择了SSD。
  5. 重新启动期间唯一奇怪的是,INITIAL grub屏幕询问我是否要启动到Ubuntu。我认为这是TimeShift恢复所特有的,而且是。
  6. 随后启动的启动方式与LM19.2一样。
  7. 确认可以使用外部挂在PC上的新驱动器完成此操作后,我将编辑此答案(似乎可以正常使用),因为这意味着我可以快速复制任何LM机器新硬件。

仅引导速度就使这些简单的步骤值得努力。即使Dropbox传输也很好-它只希望我再次登录,并花了全部时间来索引文件,但效果很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.