首页 > 编程知识 正文

ghost备份linux,linux系统镜像ghost制作

时间:2023-05-03 07:26:32 阅读:285802 作者:1340

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也可以去掉。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。