无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3640|回复: 20
打印 上一主题 下一主题

[分享] 使用dd命令克隆整个系统转载自网络方法

  [复制链接]
跳转到指定楼层
1#
发表于 2021-3-5 16:33:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用dd命令克隆整个系统
神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具!

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

       进入Linux操作系统,打开命令行,执行如下命令:
      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启动计算机。
        因此计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!


一样适用于非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 生成压缩的镜像文件,可以执行命令: #   dd   bs=512
count=[fdisk命令中最大的end数+1] if=/dev/sda | gzip -6 > /ghost.img.gz

还原时,可以执行下列命令: # gzip -dc /ghost.img.gz.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。   就不会造成你在恢复后的计算机上无法上网的问题了。



2#
发表于 2021-3-5 16:48:18 来自手机 | 只看该作者
legacy启动才需要dd,efi启动了,打包,解包就行了。
回复

使用道具 举报

3#
发表于 2021-3-5 17:04:43 | 只看该作者
备份linux常用这个
回复

使用道具 举报

4#
发表于 2021-3-5 17:15:37 | 只看该作者
记号一下,没搞过
回复

使用道具 举报

5#
发表于 2021-3-5 17:47:09 | 只看该作者
好像很腻害
回复

使用道具 举报

6#
发表于 2021-3-5 17:58:38 | 只看该作者
以前备份安卓固件就用的 dd+ gzip .
纯数据的分区就起用接 tar 了.
回复

使用道具 举报

7#
发表于 2021-3-5 18:55:13 | 只看该作者
我以为备份驱动那个DD
回复

使用道具 举报

8#
发表于 2021-3-5 21:15:34 | 只看该作者
linux好深奥,谢谢指导
回复

使用道具 举报

9#
发表于 2021-3-5 21:28:01 | 只看该作者
用G4L是为了网克方便吧?
回复

使用道具 举报

10#
发表于 2021-3-5 23:36:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

11#
发表于 2021-3-6 13:28:44 | 只看该作者
100G硬盤,使用了6G
dd懂得只備份那使用了的6G???
回复

使用道具 举报

12#
 楼主| 发表于 2021-3-12 14:11:44 | 只看该作者
本帖最后由 sairen139 于 2021-3-12 14:19 编辑

发现windows下的能用的dd工具0.63版也能实现这篇帖子的效果,而且复制速度超快一秒几GB速度上远远超越了备份还原工具snapshot.exe!另外一种用法完全可以把这个windows下的dd工具当成一个把电脑上的数据盘转移或者备份到移动硬盘或者别的备份介质上超级快速的工具!

0620BA4E-EAB7-4668-AD31-25D8C71F0A25.png (726.49 KB, 下载次数: 35)

0620BA4E-EAB7-4668-AD31-25D8C71F0A25.png

F30EFB55-5739-424E-9A13-FF13E77A0976.jpeg (999.5 KB, 下载次数: 35)

F30EFB55-5739-424E-9A13-FF13E77A0976.jpeg

点评

  dd ] [count=BLOCKS[SUFFIX]] if=FILE of=FILE [seek=BLOCKS[SUFFIX]] [skip=BLOCKS[SUFFIX]] [--size] [--list] [--progress]  其中:  bs代表镜像时缓冲块的大小,通常建议设得大一点,比如1M、10M等(单  详情 回复 发表于 2021-3-13 23:10
回复

使用道具 举报

13#
发表于 2021-3-12 14:43:02 | 只看该作者
g4d是不是也有dd命令啊!!????
回复

使用道具 举报

14#
 楼主| 发表于 2021-3-13 23:10:51 | 只看该作者
本帖最后由 sairen139 于 2021-3-13 23:15 编辑
sairen139 发表于 2021-3-12 14:11
发现windows下的能用的dd工具0.63版也能实现这篇帖子的效果,而且复制速度超快一秒几GB速度上远远超越了备 ...

  dd [bs=SIZE[SUFFIX]] [count=BLOCKS[SUFFIX]] if=FILE of=FILE [seek=BLOCKS[SUFFIX]] [skip=BLOCKS[SUFFIX]] [--size] [--list] [--progress]  其中:  bs代表镜像时缓冲块的大小,通常建议设得大一点,比如1M、10M等(单位可用:c表示字节,w表示双字,d表示4字节,q表示8字节,k表示1024字节,M表示k*k字节,G表示k*k*k字节),默认为512字节  count表示镜像的块总数  if与of分别表示镜像源与镜像目标的设备文件路径  seek表示在备份时对of后面的部分也就是目标文件跳过多少块再开始写  skip表示备份时对if后面的部分也就是原文件跳过多少块再开始备份  --size表示对源设备的读取进行大小校验,以避免IO死循环等错误  --list表示列出可利用的磁盘(分区)设备文件,在if与of中指定的这是这些设备名称  --progress表示显示镜像进度[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]全选代码[/url]
[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]复制[/url]



对软盘做镜像:dd if=\\.\a: of=c:\temp\disk1.img bs=1440k[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]全选代码[/url]
[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]复制[/url]



先用 dd --list,查到要镜像的设备路径为:\\?\device\harddisk1\dr5[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]全选代码[/url]
[backcolor=rgba(224, 224, 224, 0.2)][size=0.8em][url=]复制[/url]



E:\>dd if=\\?\device\harddisk1\dr5 of=r:\aa.img --size





rawwrite dd for windows version 0.5.Written by John Newbigin <jn@it.swin.edu.au>This program is covered by the GPL.  See copying.txt for details250880+0 records in250880+0 records out


回复

使用道具 举报

15#
发表于 2021-3-18 13:41:37 | 只看该作者
进来学习一下
回复

使用道具 举报

16#
发表于 2021-3-18 17:10:24 | 只看该作者
回复

使用道具 举报

17#
发表于 2021-3-23 13:29:35 | 只看该作者
收藏下来,有空再看
回复

使用道具 举报

18#
发表于 2021-3-30 23:21:44 | 只看该作者
好教程,正需要
回复

使用道具 举报

19#
发表于 2021-3-31 13:03:28 | 只看该作者
好教程,正需要
回复

使用道具 举报

20#
发表于 2023-2-15 17:50:58 | 只看该作者
    dd   bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda of=/ghost.img
    这样,就可以把我需要的分区数据全部copy到ghost.img文件中。镜像制作完成了!


对这一段有疑问,我硬盘上有Linux和Win的双系统,我目前需要整盘备份,便于往其他同型号的机器上恢复系统,发现ghost对Linux分区支持有问题,找了这了。
dd如何镜像整个硬盘,还只把有数据的部分镜像?
回复

使用道具 举报

21#
发表于 2023-2-15 18:03:32 | 只看该作者
表示看不懂
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-12 04:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表