当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : linux dd 命令备份
帖子发表于 : 2016-06-24 11:27 

注册: 2007-03-22 14:04
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
进入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。 就不会造成你在恢复后的计算机上无法上网的问题了。



count=[fdisk命令中最大的end数+1]这个最大的end数+1是什么意思


页首
 用户资料  
 
2 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-06-24 12:19 

注册: 2009-08-04 16:33
帖子: 16891
送出感谢: 21
接收感谢: 1826
引用:
count=[fdisk命令中最大的end数+1]这个最大的end数+1是什么意思

http://serverfault.com/questions/446529 ... -partition
create image of a USB drive without unallocated partition
使用 count 關鍵字 搜尋
對於 count 有說明
count 不需要精確唯一值 但是要記住 目的 :
you want to create an image from the start of the disk to the end of the last partition.
把該硬盤最後一個分割區的終點 包含在 dd 指令範圍內


页首
 用户资料  
 
3 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-06-24 13:05 

注册: 2007-01-14 16:23
帖子: 4255
送出感谢: 0 次
接收感谢: 107
dd命令很危险,不到万不得已,别随便拿来备份,特别是硬盘容量不一致的情况下,至于拿来和ghost比较,我就呵呵下


_________________
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}


页首
 用户资料  
 
4 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-07-05 19:12 

注册: 2016-04-21 20:37
帖子: 37
系统: win10
送出感谢: 2
接收感谢: 0 次
不同容量恢复文件后肯定要修复,不然你的大容量分区只能当你原备份分区大小用了。
dd不能对文件排序,所有恢复并不能减少碎片,对速度稍微有点提升。至于太占容量不用说了吧。
dd其实在手机,嵌入式设备用的多,比如线刷,都是通过dd这样的镜像拷贝。
扯偏了,dd命令不可缺但并不是最优秀的,而且一般pc上不太会用来备份恢复。dd if=/dev/zero ...这种用法都比备份恢复用的多。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-07-06 16:00 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
为什么你们用dd备份资料 :Adore


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
6 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-07-07 9:00 
头像

注册: 2009-03-06 10:52
帖子: 261
系统: ubuntu-12.04
送出感谢: 4
接收感谢: 0 次
还有什么备份镜像的好办法?如果只备份安装的软件,其他不需要,要如何?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: linux dd 命令备份
帖子发表于 : 2016-07-07 13:50 

注册: 2016-07-07 13:45
帖子: 1
系统: ubuntu
送出感谢: 0 次
接收感谢: 0 次
学习了。。.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译