ghost linux

ghost和g4l

安装操做系统,速度太慢,整个过程太冗长乏味了。linux

安装过程当中,须要回答若干问题,系统须要安装无数个软件,建立和写入无数的文件。由于涉及到大量的文件定位和读写,速度必定是快不起来的。git

Windows下咱们经常使用ghost系统来备份和刻录操做系统。ghost能够clone整个系统的镜像,而后在新的电脑上恢复,至关简单。用ghost系统安装操做系统比使用安装光盘安装系统要快捷多了,也不须要回答任何问题了。github

那么,咱们能不能用ghost来备份和恢复Linux系统呢。web

答案是不行。由于ghost只能识别不多的老旧Linux文件系统,也没法识别grub和LILO等引导加载程序。ubuntu

其实,Linux下也有ghost工具,最著名的有g4l—ghostForLinux。网络

用了一下ghostForLinux。若是是整个磁盘的复制和恢复,还算简单。可是,我试了半天,也没办法实现对一个或者几个分区的恢复。工具

g4l,仍是太弱了,没法知足个人要求!布局

神奇的fdisk和dd命令

深深的苦恼中,灵光乍现:神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具!网站

既然如此,我为何要使用g4l这样复杂的工具呢?一条dd命令不就能够帮我实现任意复杂的镜像复制和恢复的需求了吗?管他是grub,仍是ext4,btrfs,FAT32,NTFS…dd面前众平生等。spa

进入Linux操做系统,打开命令行,执行以下命令:

能够查看全部磁盘上的全部分区的尺寸和布局状况。

-u,让start和end中数字的单位是512字节,也就是一个sector扇区的大小。

假设我有一个/dev/sda磁盘,有100GB大小。我安装了一个Ubuntu操做系统。使用了以下分区:

/dev/sda1 5GB

/dev/sda2 1GB扩展分区

/dev/sda5 1GB扩展分区

/dev/sda2是全部扩展分区,它的大小和/dev/sda5重合。

/dev/sda1是ext4格式的文件系统。用于安装ubuntu操做系统。

/dev/sda5是swap格式的文件系统,做为交换分区。

若是我用弱智的g4l工具制做系统的镜像,就须要备份整个磁盘100GB,而不是我须要的6GB。

g4l也能够单独备份分区,可是在恢复时,就须要在目标计算机上安装好grub,并进行了适当的分区。很麻烦!

我这里,可使用一条dd命令就生成6GB的镜像。而后能够在任意硬盘大于6GB的计算机上恢复出完整的系统,包括MBR和3个分区sda1,sda2,sda5。

具体步骤

找一个U盘,安装UbuntuLive Cd系统。【具体如何制做U盘启动的UbuntuLive CD,能够参考Ubuntu官方网站的帮助。】

UbuntuLive Cd和WindowsPE系统相似,是光盘/U盘引导的Ubuntu操做系统,不须要安装就能够直接使用。

U盘启动,进入盘上的Ubuntu系统,打开命令行,执行:

查看硬件的分区状况。

而后执行:

这样,就能够把我须要的分区数据所有copy到ghost.img文件中。镜像制做完成了!

而后,咱们就能够把U盘插到其余系统上,用U盘启动,进入UbuntuLiveCD,打开命令行,执行以下命令:

完成后,拔掉U盘,启动计算机,就能够看到咱们的Linux系统已经安装完毕了!

注意:

不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。

所以计算机运行时会对系统盘产生大量写操做。 直接对运行中的系统盘生成的镜像,在恢复到其余硬盘上时,极可能会没法启动!

同样适用于非Linux操做系统

在linux上用dd命令实现系统镜像备份和恢复,是否是很简单呢?

对于Windows系统,甚至Mac等等任意系统,其实均可以用dd命令实现系统镜像的备份和恢复。

由于,Linux的fdisk命令可以识别任意系统下的分区格式。fdisk并不关系分区上的文件系统,甚至有无文件系统都不关心。fdisk老是能够报告分区占用了哪些扇区。

dd命令也不关心磁盘的文件系统格式,它只是简单地按照要求从指定的位置,复制多少字节数据而已。

dd命令实现镜像备份和恢复,比Ghost软件简单和强大多了。使用ghost软件,依然须要用户进行复杂而危险的磁盘分区操做。

而使用fdisk和dd这两条命令,一切都免了!

压缩和解压缩

可能咱们须要备份的分区很大,使用dd命令生成的镜像文件也就很大。存储和传输这些镜像不太方便。  咱们也可使用压缩程序压缩生成的镜像文件。 这里,我选择使用gzip程序,配合dd命令一块儿使用。

gzip参数:

-c 表示输出到stdout
-d  表示解压缩
-1 表示最快压缩
-9 表示最好压缩
默认使用的是-6压缩级别。

要使用 dd 和 gzip 生成压缩的镜像文件,能够执行命令:

还原时,能够执行下列命令:

提醒:

若是你把镜像恢复到另外一台计算机上,你可能会发现你的网卡是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也能够去掉。

相关文章
相关标签/搜索