我有 Ubuntu 14.04,里面有很多包和工作相关的东西,我对它很满意。它安装在我的 120GB 主 SSD 驱动器上(我在安装 ubuntu 时选择了“/”,所以我相信一切都应该在这个驱动器上)。它显示为 /dev/sda
现在我在我的电脑上添加了另一个 240Gb 的 SSD。目前我手头没有任何其他存储介质(例如外部硬盘驱动器)。
由于新的 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
Run Code Online (Sandbox Code Playgroud)
Pil*_*ot6 51
它可以通过几种方式完成。但最简单的方法是将所有文件从旧驱动器复制到新驱动器。
在新驱动器上创建一个 ext4 分区和一个交换分区。
从 LiveUSB 启动。
将旧的 Ubuntu 分区挂载到某个目录,将新分区挂载到其他目录。
使用cp -a命令将所有文件从旧文件复制到新文件。
/etc/fstab使用新的 UUID 进行更新。
如果有什么不清楚的,我可以添加一些解释。
Sev*_*Tux 50
为此,您可以使用CLONEZILLA。
Clonezilla 是一个免费的分区和磁盘映像/克隆工具,可用于以高度压缩的方式备份所有数据(整个磁盘或分区),然后将其克隆回硬盘以使其处于完全相同的状态。大多数情况下,这比安装操作系统要快。
下载Clonezilla 稳定版 ISO 或直接下载 clonezilla-live-2.4.6-25-amd64.iso
使用Tuxboot 7.0制作可启动(实时)USB 。
从创建的 Clonezilla 媒体启动。
现在你有很多选择:
在您的情况下,您也可以使用“设备设备”选项,但我不熟悉它。
您可以在此处找到有关 Clonezilla 的详细指南:http : //clonezilla.org
ljr*_*jrk 30
如果您有时间并想要安全:
$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync
Run Code Online (Sandbox Code Playgroud)
命令的解释:
if是输入,of目的地bs设置块大小。它是 dd 将读取和写入的块的大小。更高的块大小通常意味着更高的性能,但如果输入磁盘有错误,也会导致更多的数据损坏,请参阅此处:dd 上的 archwikinoerror 在 r/w 错误中继续。sync 如果发生错误,则同步偏移量。此外,在 Ubuntu 和大多数其他 Linux 系统(自 GNU/coreutils 8.24, 2015 起)上,您还可以使用status=progress打印进程的进度。
这将基本上创建您磁盘 sda 的映像并将其写入 sdb(相同的分区布局等)。当然,这将写入整个 120GB,因为它与文件无关。因此非常安全,但不是最快的,如果您只使用磁盘的一小部分。但是,如果输入磁盘相当满,它甚至可能更快。
但:
小智 8
当我切换到新硬盘时,我的做法是:
/mnt/a/mnt/bcp -a或使用 tar 将文件复制/mnt/a到/mnt/b/etc/fstab(您可能想要使用blkid用来识别新的 UUID)注意¹:
使用以下命令检查所有硬盘和分区:
sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)
现在记下安装 Ubuntu 的分区,如下所示: /dev/sda1
挂载需要安装GRUB 2的分区(硬盘分区),文件系统出现在Nautilus中。现在我们必须挂载正确的硬盘分区来更改实际的硬盘 MBR。为此,我们需要:
sudo mount /dev/sda1 /mnt
mount
Run Code Online (Sandbox Code Playgroud)
现在将分区挂载到备用位置
sudo mount /dev/sda1 /mnt/boot
Run Code Online (Sandbox Code Playgroud)
从/dev您启动的实时映像上的/dev文件夹到您挂载到的分区上的文件夹创建一个牢不可破的链接/mnt
sudo mount --bind /dev /mnt/dev/
Run Code Online (Sandbox Code Playgroud)
现在我们必须将根从 live CD 根 ( / ) 更改为挂载分区的根
sudo chroot /mnt
Run Code Online (Sandbox Code Playgroud)
现在您在一个新的 root shell 中,其中挂载的分区是新的 root。您可以验证此键入ls。由于我们现在在挂载分区中,我们可以继续安装 GRUB 2:
sudo grub-install /dev/sda
Run Code Online (Sandbox Code Playgroud)
安装应该现在完成,没有错误
退出您的 CHROOT shell,通过键入exit或按Ctrl+D
将您带回到 Live CD/USB Shell
卸载我们之前安装的分区以进行干净的重启:
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)
并在取出 Live CD 或 USB 记忆棒后重新启动以从硬盘启动:
sudo reboot
Run Code Online (Sandbox Code Playgroud)
与其他答案不同,这允许您克隆 Linux 安装并将其添加到 Grub 菜单中,并且您当前的安装完好无损。此外,它会自动/etc/fstab为您修改并更新grub启动菜单。
提供了一个菜单来帮助您选择要克隆到的正确分区。来自分区的克隆是您当前的引导分区。
rsync如果您选择重新克隆分区,则用于获得最佳速度。如果升级失败,您等待错误修复并希望再次运行升级,这将是有益的。同样,您可能在升级过程中选择了错误的选项,并希望再次执行此操作。
完整脚本可以在这里找到:用于将 Ubuntu 克隆到新分区以测试 18.04 LTS 升级的 Bash 脚本,屏幕如下所示:
| 归档时间: |
|
| 查看次数: |
207786 次 |
| 最近记录: |