用DD命令制作硬盘镜像

2023-05-16

 用DD命令制作硬盘镜像

 

本文参考http://serverfault.com/questions/4906/using-dd-for-disk-cloning写出,转载时请说明出处。


以下的说明都是针对备份整个硬盘,而不是备份某一个分区。


 

一、用DD命令制作硬盘镜像的特点

 

(1)在制作镜像时,不能对需要进行备份的硬盘经常写操作,可以只读挂载或者不挂载。

 

(2)在制作镜像时,MBR、硬盘的分区表、bootloader也会被备份。

 

(3)生成的镜像文件用于恢复时,目标硬盘的容量必须等于或大于源硬盘的容量。

 

(4)使用硬盘镜像完成恢复后,由于目标硬盘的分区表跟源硬盘的分区表是一样的,所以会造成目标硬盘的空间浪费。这个问题可以通过使用硬盘分区大小调整工具解决。

 

(5)在dd生成或恢复镜像时,默认没有显示进度,但这个问题可以解决。解决方法请看下文。

 

 

二、备份和还原操作

 

(1)制作硬盘sdb的镜像文件sdb_backup.img:

$dd if=/dev/sdb of=~/sdb_backup.imgbs=32M 

 

注:bs即blocksize,bs根根系统的内存大小和硬盘读写速度而设定

 

(2)将硬盘sdb的内容直接克隆到硬盘sdc中(要保证sdc的容量等于或大于sdb的容量):

$dd if=/dev/sda of=/dev/sdbbs=32M

 

(3)需要备份的硬盘可能存在大量的空白区域(未用于存储数据的区域),如果用压缩工具压缩生成的镜像,可大大减小镜像的大小。

 

在制作硬盘sdb的镜像文件时就进行压缩:

$dd if=/dev/sdb| gzip -c  > ~/sdb_backup.img.gz

 

将备份的镜像恢复到硬盘sdc中

$gunzip -c ~/sdb_backup.img.gz| dd of=/dev/sdc

 

(5)只备份硬盘的MBR

$dd if=/dev/sdb of=~/MBR_backup bs=512 count=1

(6)当使用dd进行镜像备份时,如dd发现某个sector(扇区)错误,默认会停止备份操作。这时可以 "conv=noerror,sync" to ensure that it doesn't stop whenit encounters an error, and fills in the missing sector(s) with null bytes.This is usually the first step I take if trying to recover from a failed orfailing disk -- get a copy before doing any recovery attempts, and then dorecovery on the good (cloned) disk. I leave it to the recovery tool to copewith any blank sectors that couldn't be copied.

gunzip -c ~/sdb_backup.img.gz| dd of=/dev/sdc conv=noerror,sync

注意:

If you have a disk with bad sectors,you really should be using 'ddrescue' instead of dd. It's much more efficient,and has a much better chance of recovering more data. (Don't get it confusedwith dd_rescue, which is not as good)

If the source drive is damaged at all,you'll have more luck usingdd_rhelp withdd_rescue (my personal preference) or GNUddrescue.

The reason behind this is that, on readerrors, dd keeps trying and trying and trying - potentially waiting for along time for timeouts to occur.dd_rescue doessmart things like reading up to an error, then picking a spot further on on thedisk and reading backwards to the last error, anddd_rhelp isbasically a dd_rescue session manager - cleverly starting and resumingdd_rescue runsto make it quicker again.

The end result of dd_rhelp ismaximum data recovered in minimum time. If you leavedd_rhelprunning, in the end it does the exact same job asdd inthe same time. However, ifdd encountered read errors at byte 100 of your 100Gb disk, you'd haveto wait a long time to recover the other 9,999,900 bytes*, whereasdd_rhelp+dd_rescue wouldrecover the bulk of the data much faster.

 

 

(5)显示制作操作或恢复操作的进度

参考A

Youcan follow the progression of the operation with :

$ddif=/dev/sda of=/dev/sdb & pid=$!

$kill-USR1 $pid; sleep 1; kill $pid

 

参考B

Youcan get a dd process running in the background to report status by sending it asignal with the kill command, e.g.:

$ddif=/dev/hdb of=/image.img &

$kill -SIGUSR11234       

 

#这里假设1234为备份进程号

 

参考C

The man page says: Sending a USR1 signal to a running ‘dd’process makes it print I/O statistics to standard error and then resumecopying.

I use this feature regularly.

Thisis kind of a cheap hack, but it's a quick and dirty way to monitor your DDprocess.

Runyour dd command. Open a new shell and do a ps awx to find your dd process' PID.Now in the new shell type watch -n 10 kill -USR1 {pid of your DD process}

Thiswill do nothing in the watch output window, but back in the original DD shell,DD will start outputting status reports every 10 seconds. You can change the -n10 in the watch command to any other time frame of course.

OS X doesn't have watch available and -USR1 kills dd. The following command works though: while [ true ]; do killall -INFO dd; sleep 30; done

 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用DD命令制作硬盘镜像 的相关文章

  • Django19:发送邮件

    1 邮件相关协议 xff08 1 xff09 SMTP SMTP xff08 Simple Mail Transfer Protocol xff09 xff0c 简单邮件传输协议 xff08 25号端口 xff09 它是一组用于从原地址到目
  • JsonCpp的基本用法

    1 JsonCpp C 43 43 库 xff0c 允许操作JSON值 xff0c 包括与字符串串行化和序列化 它可在反序列化 序列化步骤中保留现有注释 xff0c 使其成为存储用户输入文件的便捷方式 是一个第三方JSON解析库 xff0c
  • POCO C++库学习和分析 -- 文件系统

    POCO C 43 43 库学习和分析 文件系统 既然作为一个框架性的库 xff0c 自然会提供对于文件系统的操作 在Poco库中 xff0c 封装了一些类去完成上述操作 这些类包括了 xff1a 1 Poco Path 2 Poco Fi
  • C++中的HTTP协议

    1 HTTP Hyper Text Transfer Protocol xff08 超文本传输协议 xff09 是一种通信协议 xff0c 它允许将超文本标记语言 HTML 文档从Web服务器传送到客户端的浏览器 在Internet中所有的
  • C++中析构函数为虚函数

    1 析构函数是否定义为虚函数的区别 xff08 1 xff09 析构函数定义为虚函数时 xff1a 基类指针可以指向派生类的对象 xff08 多态性 xff09 xff0c 如果删除该指针delete p xff1b 就会调用该指针指向的派
  • [Linux C]TCP通讯例程

    这个是最最最基本的例程 xff0c 先开一个坑 xff0c 稍后再慢慢完善 服务端程序 include lt stdio h gt include lt stdlib h gt include lt string h gt include
  • STM32串口环形缓冲区实现

    stm32串口环形缓冲区 一 ringbuff h span class token macro property span class token directive hash span span class token directiv
  • C++系列8:常用库

    1 cmath 数学计算 include lt iostream gt include lt cmath gt using namespace std int main 数字定义 short s 61 10 int i 61 1000 lo
  • C语言 字符串函数

    C语言 字符串函数 一 字符串长度函数 strlen二 不受限制的字符串函数2 1 复制字符串函数 strcpy2 2 字符串连接函数 strcat2 3 字符串比较函数strcmp 三 长度受限制的字符串函数3 1 复制字符串函数 str
  • HTTP基本认证(Basic Authentication)的JAVA示例

    大家在登录网站的时候 xff0c 大部分时候是通过一个表单提交登录信息 但是有时候浏览器会弹出一个登录验证的对话框 xff0c 如下图 xff0c 这就是使用HTTP基本认证 下面来看看一看这个认证的工作过程 第一步 客户端发送http r
  • c++各种常用库

    cmath xff1a 开根号 xff1a include lt iostream gt include lt cmath gt using namespace std int main double x 61 8 cout lt lt p
  • 安装cv2遇到的小问题解决

    前面文章中也用到了cv2这个包 安装cv2只需要输入下面指令 xff0c pip install opencv python 我在给我的树莓派安装时 xff0c 后面还遇到了一些问题 先是出现 ImportError libcblas so
  • C语言<string.h>常用函数整理

    整理了string h中常用的几个函数 xff0c 仅供参考 xff01 1 strcpy 2 memcpy 3 strcat 4 strchr 5 strstr 6 strcmp 7 memcmp 8 strset 9 memset 声明
  • POCO C++库学习和分析 -- 日志 (一)

    POCO C 43 43 库学习和分析 日志 一 日志对于程序来说是非常重要的 xff0c 特别是对一些大型程序而言 一旦程序被发布 xff0c 在现场日志几乎是程序员唯一可以获取程序信息的手段 Poco作为一个框架类库 xff0c 提供了
  • 字节存储排序:大端和小端

    当前的存储器 xff0c 多以byte为访问的最小单元 xff0c 当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题 于是端 endian 的问题应运而生了 对于不同的存储方法 就有大端 big endian 和小端
  • CRC算法原理及C语言实现

    CRC算法原理及C语言实现 摘 要 本文从理论上推导出CRC算法实现原理 xff0c 给出三种分别适应不同计算机或微控制器硬件环境的C语言程序 读者更能根据本算法原理 xff0c 用不同的语言编写出独特风格更加实用的CRC计算程序 关键词
  • 动态分配的内存释放之后指针要置空

    define CRT SECURE NO WARNINGS include lt stdio h gt include lt stdlib h gt void main2 int num scanf 34 d 34 amp num prin
  • yolomark的相关操作

    1 文件组成 主要组成部分如图上 改yolo mark脚本中指令 主要是改左边的图片路径 2 使用步骤 进入cmd 输入yolo mark exe的文件路径 开始标注 image num 是对应图像的数 xff0c object id是对应
  • c++:3.7迭代器(1)

    迭代器 迭代器的基本概念 xff1a 1 迭代器是一种遍历容器元素的数据类型 C 43 43 迭代器Interator就是一个指向某种STL对象的泛型指针 通过该指针可以简单方便地遍历所有元素 2 迭代器 xff08 iterator xf
  • 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理 xff1a 查询和进入中断处理 1 查询方式 void Init T0 void 定时器初始化 TMOD 61 0x01 计时器模式 TH0 61 65535 65000 256 初装值为65536 650

随机推荐

  • DIY 无人机

    这是一个为满足个人兴趣的实践性项目 这个项目起源于我买的一架航模级的遥控电动直升机 xff0c 想要飞好它还是相当困难的 xff0c 需要敏捷的反应 轻柔的控制 xff0c 不幸的是我的反射弧很长 xff0c 所以练习起来格外困难 在对我的
  • 自定义的CircleProgressBar,支持自定义宽度,颜色等等。

    基于Anbase框架优化了了一个自定义的CircleProgressBar xff0c onDraw方法如下 64 Override protected void onDraw Canvas canvas super onDraw canv
  • 3D打印技术

    3D打印技术 什么是3D打印技术3D打印机的发展和运用领域3D打印过程 什么是3D打印技术 3D打印 xff08 3D printing xff09 是快速成型的一种技术 xff0c 自1986年美国科学家查克 赫尔开发第一台商业3D印刷机
  • 改变世界的17个方程式

    数学是一种美妙而优雅的东西 xff0c 它隐藏在我们生活的方方面面 xff0c 却又难以察觉 xff0c 而这需要一双慧眼才能看到 2013年 xff0c 科普作家伊恩 斯图尔特 Ian Stewart 就专门出了一本书 xff0c 名叫
  • ROS控制多台机器人实现多机协同

    ROS控制多台机器人的思路与实现 1 实现思路1 1 两台机器人跟随1 2 多台机器人编队 2 TF工具的使用2 1 什么是TF2 2 TF的构成2 3 向TF工具广播发送自己位置2 4 向TF工具收听获取坐标关系 3 通过turtlesi
  • 适合小白入门Arduino UNO的介绍

    编者按 xff1a 本文转载于酷耍平台 xff08 kooshua com xff09 Arduino是什么 xff1f Arduino是一款便捷灵活 方便上手的开源电子原型平台 包含硬件 xff08 各种型号的Arduino板 xff09
  • 记海康摄像头获取保存截图的一个方法(c#)

    记海康摄像头获取保存截图的一个方法 xff08 c xff09 先获取海康摄像头接口信息 引入模块 span class token keyword using span span class token namespace System
  • Linux设备树语法详解

    概念 Linux内核从3 x开始引入设备树的概念 xff0c 用于实现驱动代码与设备信息相分离 在设备树出现以前 xff0c 所有关于设备的具体信息都要写在驱动里 xff0c 一旦外围设备变化 xff0c 驱动代码就要重写 引入了设备树之后
  • Arduino智能越野小车AIR ROVER

    摘自 xff1a https goldelec com product detail 507 精心打造智能小车AIR ROVER xff0c 结实 稳固 大小适中 xff0c 越野爬坡能强 xff0c 采用麦克纳姆轮 xff0c 通过手机A
  • SSR的原理及好处

    什么是SSR SSR是Server Side Render简称 xff0c 叫服务端渲染 在客户端请求服务器的时候 xff0c 服务器到数据库中获取到相关的数据 xff0c 并且在服务器内部将Vue组件渲染成HTML xff0c 并且将数据
  • 区位码、国标码与机内码

    区位码 国标码与机内码 为了适应计算机处理汉字信息的需要 xff0c 在 1980 年 xff0c 我国国家标准总局发布 信息交换用汉字编码字符集 基本集 1981 年 5 月 1 日 开始实施的这套国家标准 这套国家标准的标准号是 GB2
  • 获取NSString子字符串

    NSString类中提供了这样三个方法用于获取子字符串 xff1a substringFromIndex substringWithRange substringToIndex xff1a 它们该怎么使用呢 xff1f 见下面代码即可知道
  • NSData和UIImage之间的转换

    源自 xff1a http stackoverflow com questions 2240765 nsdata to uiimage Try this code This worked for me create path to save
  • 获取UIImage的图像MD5

    问 xff1a I 39 m trying to compare two UIImages from the file system to see if they are the same Obviously I can 39 t use
  • 最全面的shsh备份及恢复教程,已更新Win版小雨伞4.33.00

    转自 xff1a http bbs weiphone com read htm tid 2017752 html 很多小白不知道如何备份shsh xff0c 论坛有很多关于备份shsh的帖子 xff0c 但大多都不全面 xff0c 本贴把s
  • C++查看大端序小端序的一些思考

    首先明确一个概念 xff0c 无论是大段序还是小端序 类型指针指向的地址都是该类型所占内存的低地址 明确了这个 xff0c 就好判断大端序和小端序了 这是大端序小端序的介绍链接 下边的是验证系统是大端序还是小端序的程序 span class
  • 设计模式书籍推荐

    1 名称 xff1a Head First Design Patterns 语言 xff1a java 评论 xff1a Jolt大奖得主 xff0c 介绍了常见的十几种模式 我认为最好的模式入门书籍 xff0c 内容生动 xff0c 风格
  • C#如何调用linux so库

    testlib c中的内容 xff1a include lt stdio h gt int sum int a int b return a 43 b int minus int a int b return a b main cs中的内容
  • 电机KV值

    电机 KV 值 xff1a 电机的转速 xff08 空载 xff09 61 KV 值 X 电压 xff1b 例如 KV1000 的电机在 10V 电压下它的转速 xff08 空载 xff09 就是 10000 转 分钟 电机的 KV 值越高
  • 用DD命令制作硬盘镜像

    用DD命令制作硬盘镜像 本文参考http serverfault com questions 4906 using dd for disk cloning写出 xff0c 转载时请说明出处 以下的说明都是针对备份整个硬盘 xff0c 而不是