今天,我们将研究如何将所有数据从一个硬盘驱动器迁移到另一个硬盘,如果由于某种原因我们需要用另一个(相同或不同容量)的硬盘替换计算机的当前硬盘,这项工作将很有用。
几天前,在一次偶然访问朋友的房子(几个月后我坚持不懈地迁移到GNU / Linux)上时,他很高兴地向我展示了他们给他的新硬盘(500 Gb)。 HDD,尽管对于许多人来说,它看起来像是一个小容量设备,但在侏罗纪古巴,这仍然是向大数据存储迈出的重要一步),并且需要替换已经过时且半故障的160 GB磁盘。
他的建议本身是删除旧磁盘,然后将500 GB磁盘放入其位置,然后安装 Debian,这是我已安装在旧磁盘上的发行版,需要一段时间来恢复其所有设置。
发生这种情况时,我朋友的一个堂兄正在等待这项工作的高潮,以取下80 GB的磁盘,这将替换一台更旧的计算机中的40 GB的磁盘。
所有这一切的细节是,我什至没有带着安装盘 Debian,而手边的存储库则更少。 因此,除非我去家中找到必要的东西,否则安装系统和应用程序的想法是我们无法实现的,但是从古巴圣地亚哥市的另一端搬到另一端不会是另一种选择对我来说,在这个城市,在新的一年中,官方交通(私人摩托车)的收费翻了一番(宽限期将使我损失不少于40比索)。
那是火花点燃的时刻:克隆专辑。 我知道克隆磁盘本来是你们中许多人的第一件事,但是对我来说, 准字母 在这些任务中,公开奥林匹斯众神直接发出了突然的选择。
在计算了必要的介绍之后,我们将转到有关案例的技术方面。 最初,我们有一个80 GB硬盘,带有以下分区系统:
/ dev / sda1 // dev / sda5交换/ dev / sda6 / home
我们将对新的500 GB硬盘进行分区,如下所示:
/ dev / sdb1 // dev / sdb2交换/ dev / sdb3 / home
许多人肯定已经注意到,在第一个硬盘驱动器中,从sda1跳转到sda5,这是因为定义分区时,存在一个可引导的主分区,即sda1,然后是一个扩展分区,即一分为二: sdaxnumx sda6.
另外,在某个时候,我认为我必须删除一个分区,我的朋友曾经在该分区中放置过时的Windows 7。
500 Gb硬盘驱动器已分区,因此可以连续找到分区号。 该光盘名为 的/ dev / sdb的 因为通过将其安装在SATA端口中,您可以同时与现有磁盘共享系统, / dev / sda上的.
格式化分区
要创建分区,我们可以使用一些可视化工具,例如 分开的或控制台中的某些应用程序,例如 CFDISK。 请记住,在这一步中,我们来自第一个硬盘驱动器(80 GB)上的操作系统。
也就是说,由此我们创建了新硬盘的三个分区。 创建分区后,必须对其进行格式化:
mkfs.ext4 / dev / sdb1 mkfs.ext4 / dev / sdb3 mkswap / dev / sdb2
我们只是做的是将/ dev / sdb1和/ dev / sdb2格式化为ext4,将/ dev / sdb2格式化为SWAP。
命令 mkfs.ext4文件 它类似于 mkfs -t ext4。 我们必须考虑到,在新硬盘驱动器上重新启动时,必须告诉系统它具有新的交换分区(交换分区):
swapon / dev / sda2
我们使用sda2而不是sdb2,因为完成后,我们将删除旧磁盘。
克隆分区
我们已经陷入困境 鸡肉饭鸡肉。 没有克隆分区的确切方法。 在我们的例子中,我们必须精确复制/ home的内容,为此,我们将执行以下操作(作为root用户):
cd /媒体mkdir sdb3 mmount -t ext4 / dev / sdb3 /媒体/ sdb3 rsync -a /主页/ myfriend媒体/ sdb3
放松一下,我解释:
在/ media内部,我们创建了一个名为sdb3的目录(该目录应与新磁盘分区的名称匹配),以便在安装时不会造成混乱。
然后,我们将使用rsync命令将/ home中的文件和文件夹同步到/ media / sdb3中,因为sdb3分区将是/ home。
旗 -a 这将帮助我们维护权限,所有者,日期和目录。
我们已经聪明地使用了 /家/我的朋友 而不是 /家/我的朋友/,因为如果我在朋友的末尾加了斜杠,我将专门复制/ home /我朋友内的文件和文件夹。 我们所做的等同于放置:
rsync -a /主页/ /媒体/ sdb3
就像我的朋友一样,他在家中只有一个用户,放置一个或另一个命令行无关紧要。
现在是时候克隆根/分区了。 这是关键而微妙的时刻,因为某些故障可能会使分区无法启动,从而导致硬盘没有系统。
下一步的一个技巧是在根分区中进行一些清理,以节省空间并减少不必要的数据从一个硬盘驱动器到另一个硬盘的通信。
最好事先清空回收站(甚至在克隆主页之前),删除不使用的程序包以及我们不需要的特定程序包:
dpkg -l | grep ^ rc dpkg --purge软件包
我们还可以确保从本地存储库中删除软件包:我们在每次更新或安装中从存储库中下载并已缓存的软件包:
apt-get clean
通过执行上述步骤,您肯定会发现它们可以释放几GB的空间。 好吧,让我们克隆我们的根目录/。
对于根分区,建议逐位复制数据。 与家相比,这将花费更少的时间,因为它显然减少了信息的积累,并且一点一点地失败的趋势几乎为零,并且在具有特殊权限的情况下也不会出现错误。
在这种情况下,命令行为:
dd if = / dev / sdb1 = / dev / sda1
在这种情况下,我们不必安装任何东西。 完成操作的时间会更长一些,但这是值得的。
准备重启
至此,分区已经 的/ dev / sdb1 它是旧磁盘上安装的根系统的克隆。 关键是要确保当我们卸下80 GB磁盘时,我们的计算机能够识别并引导500 GB磁盘。
是时候触摸著名的fstab文件(找到的500个磁盘中的一个) / media / sdb1 / etc / fstab).
纳米/媒体/ sdb1 / etc / fstab
我们将得到类似于以下内容的信息:
#/ etc / fstab:静态文件系统信息。 ## proc / proc proc nodev,noexec,nosuid 0 0#/ dev / sda1的条目:UUID = 6b192eef-e188-4e07-94de-14c95e02de78 / ext4错误= remount-ro 0 $#/ dev / sda2的条目:UUID = 3bd60ec0 -92f3-4ea6-a4d3-aaaf27dd8b8e none swap sw 0 0#/ dev / sda3的条目:UUID = 3828f973-3b20-4019-9fe2-8296c755be31 / home ext4默认值为0 2
现在,我们需要将旧的UUID(该fstab文件中的UUID从80GB磁盘更改)更改为新的UUID(从新的500GB磁盘)。 为此,您要做的就是通过设备的UUID查找设备,这可以通过几种方式完成:
一个选项可以与以下命令一起使用:
ls -l / dev / disk / by-uuid
并以root身份使用:
笨蛋
现在我们只需要用正确的替换掉fstab的UUID。
保证启动。 安装Grub2
El 德比安·威兹(Debian Wheezy) 安装在我朋友旧硬盘上的硬盘使用Grub2作为系统引导程序,因此在 MBR(主引导记录) 新的硬盘驱动器(500 GB)中,我们将必须安装新的 GRUB.
确实已经将配置文件写入了/ boot目录,但是MBR(硬盘的第一个扇区(“扇区零”)。)为空,因此它是不可引导的。
配置保存在 /boot/grub/grub.cfg,但是此文件是由创建的 grub-mkconfig,因此不建议手动进行编辑。
最好的事情是,一旦挂载了新分区(请记住,新克隆的根分区未挂载, dd 克隆而没有安装分区):
挂载-t ext4 / dev / sdb1 /媒体/ sdb1
现在,我们必须通过执行以下操作将GRUB2加载到MBR中:
grub-install / dev / sdb
瞧,就是这么简单,我们已经有了 GRUB 在500 GB硬盘的MBR中配置。
最后步骤
现在我们关闭计算机,卸下朋友的80 Gb硬盘驱动器,交给表哥(请参阅初始故事),重新打开计算机电源,用手指交叉并...
数据来源: http://swlx.cubava.cu
朋友,我不知道我是否错了,但我认为-我认为-在使用'dd'命令之前,目标分区的大小必须与源分区的大小完全相同。 如果没有,一千个道歉。
跟我想的一样
dd将克隆该分区,多余的将使该分区未分配,因此由于它需要更多空间来安装新的应用程序,因此将不允许该分区。
目标分区是否大于源分区都没有关系,那么可以告诉文件系统使用额外的大小。
那是史诗般的。 让我们看看是否可以安装Debian但可以使用Arch风格(纯命令)。
您可能已经使用dd克隆了MBR:
dd if = / dev / sda = / dev / sdb bs = 512 count = 1
我认为分区不必完全相同,至少在Arch Wiki中没有提及,应该尝试一下。 问候。
看起来不错,但是我不明白为什么如果= / dev / sdb的= / dev / sda跳过前512个字节,为什么要执行dd?
好的,我知道,不同之处在于,一开始只克隆了分区,这就是为什么MBR的512个字节被跳过的原因。 非常感谢RudaMacho的建议。
您好,您打算更新系统吗? 我说的是Windows XP
您好elav,我认为使用clonezilla可以简化任务,但是您可以通过这种方式进行试验是一件好事,毕竟这是“黑客”精神
的问候!
在Slackware中,我使用tar来制作磁盘之间文件的完整副本,这保留了权限,同时我也借此机会进行了备份,fstab文件非常简单,因此无需修改uuid,创建分区就足够了以相同的顺序,使用lilo可以更轻松地创建引导文件。
很好😀
根据我的经验,gparted复制-克隆-分区速度更快
如果您需要放大或缩小它们,也可以
宏伟的elav指南,非常感谢您的分享。
我有一个问题:系统是否需要使用swapon命令来检测交换分区,还是足以更改fstab中的UUID?
6个月前,我对debian stable和kde 4.8感到无聊。 我想要最新的KDE! 我没有安装磁盘或USB内存..所以我用与elav描述的几乎相同的方法克隆了我的马stable,并更新为sid。
我向所有Linux用户推荐这种做法,我们的系统不需要超过15 GB。 通过根分区。 少一两次是不多的。
做出如此简单明了的解释,做出卓越的贡献再容易不过了。恭喜您,您是gnu / linux的老师!
很好的教程。 非常清楚!
还有命令“ dd”