Linux dd命令操作磁盘

Linux dd命令操作磁盘

dd所执行的是简单粗暴的按字节复制,什么分区表啊,MBR啊统统照搬

dd参数说明

if =输入文件(或设备名称)。

of =输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。

cbs = bytes 一次转换bytes字节。

count = blocks 只拷贝输入的blocks块。

conv = ASCII 把EBCDIC码转换为ASCII码。

conv = ebcdic 把ASCII码转换为EBCDIC码。

conv = ibm 把ASCII码转换为alternate EBCDIC码。

conv = blick 把变动位转换成固定字符。

conv = ublock 把固定们转换成变动位

conv = ucase 把字母由小写变为大写。

conv = lcase 把字母由大写变为小写。

conv = notrunc 不截短输出文件。

conv = swab 交换每一对输入字节。

conv = noerror 出错时不停止处理。

conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。

fdformat命令 低级格式化软盘。

实例:创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1

磁盘镜像克隆

全部克隆

也就是把整个硬盘复制一份。当然你首先需要在计算机上在接上一块新硬盘,并让系统识别。例如这块硬盘可能被识别为/dev/sdb,原有硬盘叫/dev/sda. 然后你可以在linux命令行上简单地执行:

dd if=/dev/sda of=/dev/sdb

此命令完成后,你的第二块硬盘上(/dev/sdb)将有一个和第一块硬盘一模一样的副本,也是可以启动的。因为dd操作就是简单的按字节复制,什么分区表啊,MBR啊统统照搬。

当然你也可以做一些微调,来定制一下克隆操作。例如你可能希望把硬盘上的内容全部备份到一个磁盘文件中,而不是另一块新硬盘,你可以

dd if=/dev/sda of=~/disk1.img

之后,disk1.img就是备份好的磁盘映像文件,你可以复制或转移到其他介质也可以压缩一下:

gzip disk1.img #generates disk1.img.gz

或者在创建磁盘映像文件的同时就执行压缩:

dd if=/dev/sda | gzip > disk.img.gzdd if=/dev/sda | bzip2 > disk.img.bz2

分区克隆

如果我们不想克隆整块磁盘,只想把某些存放数据的分区备份一下,你会需要克隆一个分区。正如预备知识所述,分区在linux下也是一个文件。例如

dd if=/dev/sda1 of=~/part1.img

将把第一块磁盘的第一个分区备份到名为part1.img的文件中。
也可以进行分区复制:

dd if=/dev/hda1 of=/dev/hda3

将把分区一原样复制到分区3.

从镜像文件恢复磁盘或分区

很简单,把上面命令中,of和if指向的文件名互换一下即可实现恢复。例如

dd if=disk1.img of=/dev/sda

把保存在disk1.img中的映像恢复到第一块磁盘

dd if=part1.img of=/dev/hda2

把保存在part1.img中的映像恢复到第一块硬盘的第二个分区

最后,需要注意一点是,无论备份还是恢复,都需要保证 of 指向的文件或磁盘空间要大于 if 指向的内容,因为是按字节复制 如果没有足够的空间去存储内容,备份自然会失败。

数据备份与恢复

备份

将本地的/dev/hdx整盘备份到/dev/hdy :

dd if=/dev/hdx of=/dev/hdy

将/dev/hdx全盘数据备份到指定路径的image文件:

dd if=/dev/hdx of=/path/to/image

备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径:

dd if=/dev/hdx | gzip >/path/to/image.gz

恢复

将备份文件恢复到指定盘:

dd if=/path/to/image of=/dev/hdx

将压缩的备份文件恢复到指定盘 :

gzip -dc /path/to/image.gz | dd of=/dev/hdx

备份MBR

备份:

备份磁盘开始的512Byte大小的MBR信息到指定文件:

dd if=/dev/hdx of=/path/to/image count=1 bs=512

恢复:

将备份的MBR信息写到磁盘开始部分:

dd if=/path/to/image of=/dev/hdx

其它实例分析

备份软盘

dd if=/dev/fd0 of=disk.img count=1 bs=1440k
将软驱数据备份到当前目录的disk.img文件

拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件

从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件

得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file  
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file 

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

测试硬盘读写速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 

通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

修复硬盘

当硬盘较长时间(比如一两年年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到
这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致
硬盘报废。下面的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

dd if=/dev/sda of=/dev/sda

销毁磁盘数据

dd if=/dev/urandom of=/dev/hda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。

用dd命令制作硬盘镜像的特点

  1. 在制作镜像时,不能对需要进行备份的硬盘进行写操作,可以只读挂载或者不挂载
  2. 在制作镜像时,MBR、硬盘的分区表、bootloader也会被备份
  3. 生成的镜像文件用于恢复时,目标硬盘的容量必须等于或大于源硬盘的容量
  4. 使用硬盘镜像完成恢复后,由于目标硬盘的分区表跟源硬盘的分区表是一样的,所以会造成目标硬盘的空间浪费。这个问题可以通过使用硬盘分区大小调整工具解决。
  5. 在dd生成或恢复镜像时,默认没有显示进度,但这个问题可以解决。解决方法请看下文。

显示dd命令进度

想要查看上面的dd命令的执行进度,可以使用下面几种方法:
比如:每5秒输出dd的进度
方法一:

watch -n 5 pkill -USR1 ^dd$

方法二:

watch -n 5 killall -USR1 dd

方法三:

while killall -USR1 dd; do sleep 5; done

方法四:

while (ps auxww |grep " dd " |grep -v grep |awk '{print $2}' |while read pid; do kill -USR1 $pid; done) ; do sleep 5; done

上述四种方法中使用三个命令:pkill、killall、kill向dd命令发送SIGUSR1信息,dd命令进程接收到信号之后就打印出自己当前的进度。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值