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

我有Ubuntu 14.04,有很多软件包和工作相关的东西,我很满意。 它安装在我的主SSD驱动器上,这是一个120GB的(当我安装ubuntu时我选择了“/”,所以我相信应该在这个驱动器上的一切)。 它显示为/ dev / sda

现在我已经在我的计算机上添加了另一个SSD,这是一个240Gb。 我目前手边没有任何其他存储介质(例如外置硬盘)。

由于新的240GB硬盘具有明显更大的容量和更快(比我的120GB更新一代),我想将我的Linux移动到这个新硬盘。 这个新的驱动器显示为/ dev / sdb,目前它没有格式化或任何东西(我现在已经完全解包并插入我的电脑中: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 

您可以使用CLONEZILLA来实现此目的。

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

  • 下载Clonezilla stable ISO或直接下载clonezilla-live-2.4.6-25-amd64.iso

  • 使用Tuxboot 7.0制作可启动(实时)USB。

  • 从创建的Clonezilla媒体启动。

  • 现在你有很多选择:

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

在此处输入图像描述

在您的情况下,您也可以使用“设备 – 设备”选项,但我不熟悉它。

你可以在这里找到关于Clonezilla的详细指南: http//clonezilla.org

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

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

  2. 从LiveUSB启动。

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

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

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

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

如果事情不明确,我可以补充一些解释。

如果你有时间并想要安全:

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

命令说明:

  • if是目的地的输入
  • bs设置块大小。 它是读取和写入的块的大小。更高的块大小通常意味着更高的性能,但如果输入磁盘有错误,也会导致更多的数据损坏,请参见此处: dd上的archwiki
  • 在r / w-errors中继续出现错误。
  • 如果发生错误, sync同步偏移量。

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

但:

  • 之后,您可能希望调整分区大小,否则您无法利用额外空间。
  • 无论如何,可能需要编辑/ etc / fstab文件。
    如果使用Hardware-ID识别磁盘,则会出现这种情况。

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

提供了一个菜单,可帮助您选择要克隆的正确分区。 分区中的克隆是您当前引导的分区。

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

完整的脚本可以在这里找到: Bash脚本将Ubuntu克隆到新分区以测试18.04 LTS升级 ,这就是屏幕的样子:

克隆ubuntu.png

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

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

Note¹:

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

 sudo fdisk -l 

现在记下安装Ubuntu的分区,它看起来像: /dev/sda1

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

 sudo mount /dev/sda1 /mnt mount 

现在将分区安装到备用位置

 sudo mount /dev/sda1 /mnt/boot 

从您启动的实时映像上的/dev文件夹创建一个不可破解的链接到您挂载到/mnt的分区上的/dev文件夹

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

现在我们必须将root从live CD root(/)更改为已安装分区的root

 sudo chroot /mnt 

现在,您处于新的根shell中,其中已安装的分区是新的根。 你可以validation这个输入ls 。 由于我们现在处于已安装的分区中,我们可以提前安装GRUB 2:

 sudo grub-install /dev/sda 

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

退出CHROOT shell,输入exit或按Ctrl + D ,返回Live CD / USB Shell

卸载我们之前安装的分区以进行干净重启:

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

删除Live CD或USB Stick以从硬盘启动后重新启动:

 sudo reboot 

资源