使用克隆属将您当前的磁盘克隆到新磁盘中,鲍勃是您的叔叔!

使用克隆属将您当前的磁盘克隆到新磁盘中,鲍勃是您的叔叔!

因此,我将笔记本电脑的 1TB 硬盘更换为 1TB sata 固态硬盘,我想知道如何将文件从一个硬盘传输到另一个硬盘。我双启动 kubuntu 17.10 和 windows 10,我想保持这种状态。我可以在 Windows 上重新安装,因为无论如何我都不怎么使用它,而且我也可以重新安装 kubuntu,因为我遇到了一些无法解决的问题,无论如何无论我花多长时间研究它们或提出问题。

除了将我的资料备份到外部硬盘之外,我还应该了解什么吗?谢谢。

答案1

您打算复制您的宝贵文件,对吧。但如果你忘记了一两个怎么办?

这个答案解决了克隆整个分区的问题,以防您忘记某些内容。


假设您的笔记本电脑的硬盘驱动器名称为:

/dev/sda

进一步假设您的 Linux 分区是:

/dev/sda2

最后假设您的外部硬盘安装为:

/mnt/externalhdd

那么你可能想做一个完美的副本其中,例如这样:

  1. 从实时 Linux USB 启动。

  2. 成为根用户:

    sudo -i
    
  3. 安装pv,或者如果您不需要查看进度,您可以使用cat

    pv < /dev/sda2 > /mnt/externalhdd/sda2.pv
    
  4. 对我来说,拥有驱动器分区的副本非常方便,以防我忘记复制某些内容。

答案2

磁盘映像方法

使用优质 USB 转 SATA 适配器或通过笔记本电脑上的辅助端口(如果有)连接 SSD。

您可以启动到任何 LiveCD/USB 环境并使用dd命令克隆磁盘,它应该可以正常工作。

如果源驱动器是 /dev/sda,目标驱动器是 /dev/sdb,则命令将为dd if=/dev/sda of=/dev/sdb bs=1M

请在开始之前验证哪个驱动器是哪个驱动器,因为此时稍有不慎就可能导致数据丢失。 (来源:我)

之后,您所需要做的就是将最后一个分区扩展到磁盘的完整长度或在该空白空间中创建一个新分区,但这不应该担心,因为源磁盘和目标磁盘的大小相同。

清洁方法

您可以从 Live CD 中获取 Kubuntu 发行版的 tar.gz 转储,然后在 ext4/xfs 分区上解压它以移植您的安装。

您必须在新分区中更新以下内容:

  • /etc/fstab 中的分区 ID

  • 使用新的 /boot 目录重新安装 grub

答案3

长话短说:

使用克隆属将您当前的磁盘克隆到新磁盘中,鲍勃是您的叔叔!


但是,如果您想玩得开心,您可以执行fdisk -l /dev/sda | head -1 && fdisk -l /dev/sdb | head -1(或者更简洁地fdisk -l | awk '/Disk.*sd(a|b)/'/dev/sda您当前的磁盘在哪里,/dev/sdb新磁盘在哪里,打印如下内容:

Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Disk /dev/sdb: 232.9 GiB, 250059350016 bytes, 488397168 sectors

记下每个磁盘的字节数:这对于接下来的内容很重要。

如果您的磁盘具有完全相同的字节数

(并且,也许,但不理想,如果您当前的磁盘比新磁盘小)


如果在你的dd命令下(请阅读下文)你输入了错误的设备文件如果 [输入文件],这没什么大不了的:你可以再做一次,但是,谨防dd 可能很危险...如果您输入了错误的设备文件 [输出文件],例如,/dev/sdc,您系统中的另一张磁盘,您立即销毁了您系统中的数据/dev/sdc,用您的数据覆盖它们如果 [输入文件];所以,检查你的 [输出文件]几次。


您可以使用dd您的命令库本图系统来制作和精确的复制 [克隆](逐字节) {dd不明白文件系统... 它是假的复制,逐字节并且,理想情况下,两个磁盘需要具有完全相同的字节数};这可能会很慢,特别是如果您不使用块大小为您提供最佳性能;唯一知道的方法最佳性能块大小,是尝试使用不同的块大小并进行测试;但就你而言,这似乎不是一个好主意(你正在操纵你的敏感数据)...你可以这样做:

dd if=/dev/sda of=/dev/sdb

/dev/sda您当前的磁盘在哪里,/dev/sdb新磁盘在哪里(这使用默认的块大小 512 字节,这可能会非常慢)

在这种情况下,当dd将当前磁盘克隆到新磁盘时,您的终端上什么也没有得到(我的意思是:stdout或上什么也没有stderr);这远非好事,特别是在这样的情况下,您正在克隆一个大磁盘,因此,在最新版本的 中dd,您可以使用status=progress在终端中获取反馈,如下所示:

 dd if=/dev/sda of=/dev/sdb status=progress

阅读您的dd手册并搜索status;如果您没有该选项,并且出于某种原因您正在使用该版本的 进行克隆dd,则可以使用pvwith dd,如下所示:

 dd if=/dev/sda | pv | dd of=/dev/sdb

pv代表 pipelineview,你会得到与status=progress新版本的几乎相同的效果dd

或者,甚至更好、更快、更简单:

pv --progress /dev/sda > /dev/sdb

pv会自动选择“最好/更快“适合您的块大小)


如果不...

(或者无论如何,真的)

即使你dd也可以使用,它有点复杂:如果 A > B,你需要做一件事,如果 B > A,你需要做另一件事,此外,还要考虑你的分区表类型(MS-DOS、GPT、...),所以...比这更好,使用partclone,甚至Clonezilla

partclone是另一个可以从终端使用的程序(也许默认情况下未安装),但是,它更适合您的任务...完全了解文件系统(它比,并且除其他外,partclone不具有更高的级别)dd不要浪费时间处理文件系统中的空字节)

Clonezilla这是一个专门为您的任务和类似任务而设计的小型 Linux 发行版;看看这里:

https://clonezilla.org/

(事实上​​,Clonezilla会尝试使用partclone,但是,如果您愿意,也可以使用dd

相关内容