Windows下Ghost可以克隆整个系统的镜像,然后在新的电脑上恢复,相当简单。Ghost安装系统比使用安装镜像安装要快的多,因为Ghost磁盘存储是连续的,且安装过程中不需要回答任何问题。
为什么不能使用Ghost来备份和恢复linux系统呢?因为Ghost只能识别很少老旧的lunux文档系统,其无法识别grub和LILO等引导加载进程。
其实linux下有个著名的g4l—ghostForlinux,但貌似无法实现对一个或者几个分区的恢复。想搞深点怎么办呢?
Ghost原理是什么?不就是数据复制吗?linux下dd命令不就是最强大的数据复制工具吗。既然如此,为什么还要使用g4l这么复杂的工具呢?一条dd命令就可以帮助实现任意复杂的镜像复制和恢复的需求了,不管是grub,还是ext4,btrfs,FAT32,NTFS…dd都可以搞定。
fdisk和dd命令
打开终端,执行如下命令:
$sudofdisk -u -l
将看到类似如下信息:
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bd2d38b
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * 2048 718847 358400 7 HPFS/NTFS/exFAT
/dev/sda2 718848 210817023 105049088 7 HPFS/NTFS/exFAT
/dev/sda3 210817024 871911423 330547200 7 HPFS/NTFS/exFAT
/dev/sda4 871913470 976771071 52428801 5 扩展
/dev/sda5 972652544 976771071 2059264 82 Linux 交换 / Solaris
/dev/sda6 871913472 972652543 50369536 83 Linux
Partition table entries are not in disk order
此命令可以查看所有磁盘上的所有分区的尺寸和布局情况。-u,让start和end中的数字的单位是512字节,也就是一个sector扇区的大小。
可见上述机器的linux系统装在了/dev/sda6分区中,下面将演示使用dd命令备份该分区的步骤:
步骤一:
制作linux live cd的启动U盘。
步骤二:
U盘启动,进入linux live系统,然后查看硬盘分区情况,找到需要备份的分区/dev/sda6
步骤三:
执行dd命令:
$dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda6 of=/sysbackup.img
这样就把我们需要的分区数据全部copy到sysbackup.img文档中了,镜像制作完成!!
然后,我们把U盘插到其他系统上,用U盘启动,进入linux live CD,打开终端,执行如下命令:
$dd if=sysbackup.img of=/dev/sda
完成后,拔掉U盘,启动计算机,就可以看到我们的linux系统已经安装完毕了!
注意:不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘镜像,而应该用liveCD启动计算机。因为计算机在运行时会对系统盘产生大量写操作。直接对运行中的系统生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!!
What’s More!!
这种生成镜像和恢复系统的方法同样适用于非linux操作系统,因为linux的fdisk命令能够识别任意系统下的分区格式,fdisk并不关心分区上的文档系统,甚至有无文档系统都不关心。fdisk总是可以报告分区占用了哪些扇区。
dd命令同样不关心磁盘的文档系统格式,它只是简单地按照要求从指定的位置复制多少数据而已。
dd命令实现镜像备份和恢复,比Ghost软件简单和强大多了。使用Ghost软件,依然需要用户进行复杂而危险的磁盘分区操作。
而使用fdisk和dd命令,一切如此简单。
和压缩命令一起使用
dd备份的分区大的话产生的镜像就会很大。存储传输镜像不太方便,可以和gzip压缩命令一起使用:
$dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda6 | gzip -6 > /sysbackup.img.gz
还原时命令:
$gzip -dc /sysbackup.img.gz | dd of=/dev/sda
提醒:
如果你把镜像恢复到另一台计算机上,你可能会发现你的网卡是eth1,而不是eth0。这是因为/etc/udev/rules.d/70-persistent-net.rules文档把你做镜像的计算机的网卡作为eth0登记了。
如果你的网络脚本对eth0进行了处理,而没有对eth1进行处理,那么不修改网络脚本,你可能就无法上网了。
也许你会希望在做镜像之前,先删除 /etc/udev/rules.d/70-persistent-net.rules 文档。这样你恢复镜像时,网卡的名字就是eth0。 就不会造成你在恢复后的计算机上无法上网的问题了。
注意:
最好在dd生成镜像之前,先umount所有 if和of 设备的分区。这样可以确保在dd的过程中文档系统没有被改变。
在完成dd(生成镜像和恢复镜像)后,执行sudo sync,确保数据被真正写入到硬盘上。
另外,如果你想要对整个硬盘进行备份和恢复,而不是只备份和恢复部分分区,那么就请把dd命令中的 count=[fdisk命令中最大的end数+1] 去掉。bs=512也可以去掉。
本文链接:https://my.lmcjl.com/post/6571.html
4 评论