转自:http://blog.jobbole.com/90978/

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系统,打开命令行,执行:

1

sudo  fdisk-u-l/dev/sda

查看硬件的分区情况。

然后执行:

1

ddbs=512count=[fdisk命令中最大的end数+1]if=/dev/sda of=/ghost.img

这样,就可以把我需要的分区数据全部copy到ghost.img文件中。镜像制作完成了!

然后,我们就可以把U盘插到其他系统上,用U盘启动,进入UbuntuLiveCD,打开命令行,执行如下命令:

1

ddif=/ghost.imgof=/dev/sda

完成后,拔掉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 生成压缩的镜像文件,可以执行命令:

1

ddbs=512count=[fdisk命令中最大的end数+1]if=/dev/sda|gzip-6>/ghost.img.gz

还原时,可以执行下列命令:

1

gzip-dc/ghost.img.gz.gz|ddof=/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也可以去掉。

转自:http://blog.jobbole.com/90978/

linux ghost功能,在linux上用dd命令实现ghost功能(示例代码)相关推荐

  1. ghost u盘 linux,在Linux上用dd命令实现Ghost功能

    具体步骤 找一个U盘,安装UbuntuLive Cd系统.[具体如何制作U盘启动的UbuntuLive CD,可以参考Ubuntu官方网站的帮助.] UbuntuLive Cd和WindowsPE系统 ...

  2. linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)

    网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 下面我们以CentOS7系统为环 ...

  3. mac linux自动补全,MacOS 上使用docker命令补全功能

    摘要 在CentOS系统上敲了很久的自动补全docker命令之后,在自己的mac系统里发现很不适应而且没什么效率,于是就google了一番查找. 1.安装brew ruby -e "$(cu ...

  4. Linux上通过dd命令低格硬盘

    Linux上通过dd命令低格硬盘 背景 格式化脚本以及查询进度的方法 背景 手里有几台租借的服务器需要归还,为了保护数据不被泄露,需要对服务器数据盘(除系统盘外其他所有硬盘)进行低级格式化. 格式化脚 ...

  5. linux镜像写入另一个硬盘,服务器DD命令将已有的硬盘镜像文件直接写到别的硬盘上...

    DD镜像是用DD命令直接将已有的硬盘镜象文件直接写到硬盘上(或指定分区)dd命令是LINUX下的磁盘读写常用命令. 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换.可以 ...

  6. dd linux 格式化u盘启动盘_linux dd命令[用于制作U盘启动盘的神奇的命令]

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  7. dd linux 格式化u盘启动盘_linux dd命令刻录启动U盘详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  8. linux中代码挂上n,Linux系统常用命令nl详解(示例代码)

    nl命令在linux系统中用来计算文件中行号.nl可以将输出的文件内容自动的加上行号!其默认的结果与cat -n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能.本文 ...

  9. linux怎么使用4g模块的网络,在ARM-linux上实现4G模块PPP拨号上网(示例代码)

    在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从一无所知到开发完成花了一周多.最后看到ARM板ping通www.baidu.com时甚是高兴,现将此过程整理如下.当然,除此之 ...

最新文章

  1. 组合特征(三)tfidf(word+article+length)
  2. 人均6.5万!鹅厂又双叒叕给员工发股票了
  3. C语言 计算2-4+6-8+.....+98-100的结果
  4. vue中地图怎么标记数据库传过来的点_【Point小数点 图表挑战总结03】如何使用六边形网格地图(下)...
  5. Qt QInputDialog文本输入对话框示例
  6. JAVA进阶教学之(单链表数据结构)
  7. BZOJ2460: [BeiJing2011]元素(线性基+贪心)
  8. python执行oracle的sql语句_在oracledb中执行SQL脚本一次执行一条语句
  9. git pull使用【转】
  10. jQuery炫酷特效之遮罩移动效果
  11. xss php漏洞扫描工具,XSpear:一款强大的XSS漏洞扫描器工具
  12. LGTM、FYI等项目开发用语,缩略语,感觉其他组员都知道,感觉就自己不知道,不好意问的就看这里把
  13. 数学建模(三)SARS的传播(03年A题)
  14. CORTEX:我知道你在真笑还是假笑 | 前辅助运动区的激活与对笑声传染性和真实性的感知
  15. 机器学习:软件漏洞分析
  16. 2022全国大学生数学建模竞赛
  17. 塑胶材料的各种特性,热塑性塑料详解
  18. C++入门教程(四十二):函数参数使用引用
  19. QMUI-Android的一些尝试(圆形进度条、Loading、圆形图片、圆形按钮、椭圆图片)
  20. SpringBoot2整合ElasticSearch(包含ElasticSearch入门+spring-boot-starter-data-elasticsearch)

热门文章

  1. 漫谈 SLAM 技术(下)
  2. 华特转债上市价格预测
  3. phpcms常用模板标签用法大全
  4. iOS 应用提交 App Store 上架被拒的原因收集
  5. 微信浏览器禁止app下载链接的两种处理方法-NiceTool
  6. 16k a4_16k.cn-16K的纸跟A4的纸有什么区别啊? – 手机爱问
  7. UE 导入图片序列动画作为贴图
  8. python颜色填充函数_【图像后处理】python+OpenCV填充孔洞
  9. 腾讯云数据万象CI助力企业解决图片处理需求!
  10. 源码编译安装LAMP(Linux, Apache ,Mysql ,PHP)-------------- (连载篇(三)----PHP)