在Linux上用dd命令实现ghost功能
作者:网络转载 发布时间:[ 2015/9/16 13:22:21 ] 推荐标签:操作系统 Windows
ghost和g4l
安装操作系统,速度太慢,整个过程太冗长乏味了。
安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入无数的文件。因为涉及到大量的文件定位和读写,速度一定是快不起来的。
Windows下我们常常使用ghost系统来备份和刻录操作系统。ghost可以clone整个系统的镜像,然后在新的电脑上恢复,相当简单。用ghost系统安装操作系统比使用安装光盘安装系统要快捷多了,也不需要回答任何问题了。
那么,我们能不能用ghost来备份和恢复Linux系统呢。
答案是不行。因为ghost只能识别很少的老旧Linux文件系统,也无法识别grub和LILO等引导加载程序。
其实,Linux下也有ghost工具,的有g4l—ghostForLinux。
用了一下ghostForLinux。如果是整个磁盘的复制和恢复,还算简单。但是,我试了半天,也没办法实现对一个或者几个分区的恢复。
g4l,还是太弱了,无法满足我的要求!
神奇的fdisk和dd命令
深深的苦恼中,灵光乍现:神奇的ghost的原理是什么呢?不是数据复制吗?Linux下的dd命令不是强大的数据复制工具!
既然如此,我为什么要使用g4l这样复杂的工具呢?一条dd命令不可以帮我实现任意复杂的镜像复制和恢复的需求了吗?管他是grub,还是ext4,btrfs,FAT32,NTFS…dd面前众生平等。
进入Linux操作系统,打开命令行,执行如下命令:
1
sudo fdisk -u -l
可以查看所有磁盘上的所有分区的尺寸和布局情况。
-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系统,打开命令行,执行:
sudo fdisk -u -l /dev/sda
查看硬件的分区情况。
然后执行:
dd bs=512 count=[fdisk命令中大的end数+1] if=/dev/sda of=/ghost.img
这样,可以把我需要的分区数据全部copy到ghost.img文件中。镜像制作完成了!
然后,我们可以把U盘插到其他系统上,用U盘启动,进入UbuntuLiveCD,打开命令行,执行如下命令:
dd if=/ghost.img of=/dev/sda
完成后,拔掉U盘,启动计算机,可以看到我们的Linux系统已经安装完毕了!
注意:
不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。
因此计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11