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

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

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

现在我又为我的电脑添加了一个 240GB 的 SSD。我手头上目前没有其他存储介质(例如外部硬盘)。

由于新的 240GB 硬盘显然容量更大、速度更快(比我的 120GB 硬盘更新一代),我想将我的 Linux 移到这个新硬盘上。这个新硬盘显示为,/dev/sdb目前它没有格式化或任何其他东西(我现在已经拆开包装并插入我的电脑 :P)

我怎样才能安全地将我的 Linux 安装移动到新驱动器?

我可以更换 SATA 电缆,以便新驱动器能够按/dev/sda需要显示。

这是有帮助的 if 的输出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

答案1

您可以为此目的使用 Clonezilla。

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

  • 下载Clonezilla 稳定 ISO

  • 使用内置的启动盘创建器应用程序或制作可启动(实时)USBTuxboot 7.0

  • 从创建的 Clonezilla 媒体启动。

  • 现在你有很多选择:

    1. 创建仅“/”(saveparts)的图像并将其克隆到其他 SDD 的任意分区。
    2. 创建完整磁盘 (savedisk) 的映像并将其克隆到新的 SSD。

Clonezilla 屏幕截图

在您的情况下,您也可以使用“device-device”选项,但我对此并不熟悉。

您可以在这里找到有关 Clonezilla 的详细指南:https://clonezilla.org

答案2

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

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

  2. 从 LiveUSB 启动。

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

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

  5. 安装 grub 到新驱动器

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

如果有什么不清楚的话,我可以添加一些解释。

答案3

如果你有时间并且想安全出行:

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

命令解释:

  • if是输入,是of目的地
  • bs设置块大小。它是 dd 将读取和写入的块的大小。块大小越高通常意味着性能越高,但如果输入磁盘有错误,数据损坏也越多,请参见此处:dd 上的 archwiki
  • noerror继续处于 r/w 错误中。
  • sync如果发生错误则同步偏移量。
  • status显示实时进度计数器

此外,在 Ubuntu 和大多数其他 Linux 系统(自 2015 年 GNU/coreutils 8.24 起)上,您还可以使用status=progress它来打印该过程的进度。

这基本上会创建磁盘 sda 的映像并将其写入 sdb(相同的分区布局等)。当然,这会写入整个 120GB,因为它与文件无关。因此非常安全,但如果您只使用磁盘的一小部分,速度不是最快的。但是,如果输入磁盘相当满,速度可能会更快。

但:

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

答案4

与其他答案不同,这允许您克隆 Linux 安装并将其添加到 Grub 菜单,同时保持当前安装完好无损。此外,它还会自动/etc/fstab为您修改和更新grub启动菜单。

系统会提供菜单来帮助您选择要克隆到的正确分区。克隆自分区是您当前的启动分区。

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

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

克隆-ubuntu.png

相关内容