Linux dd 命令详解

alt

一直对发型和身材不满意的人,有一个共同点:不肯承认这是脸的问题。

前言

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字

  • b=512
  • c=1
  • k=1024
  • w=2

dd 命令例子

dd 创建测试文件

1
2
语法:
CODE:[Copy to clipboard]dd 〔选项〕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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命令
低级格式化软盘。

创建一个2G的文件

1
dd if=/dev/zero  of=/tmp/test bs=1M count=2048

测试硬盘读写速度

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

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

销毁磁盘数据

1
dd if=/dev/urandom of=/dev/hda1

注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

确定硬盘的最佳块大小

1
2
3
4
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

通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

备份与恢复MBR

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

1
2
dd if=/dev/hda of=/root/image count=1 bs=512
# count=1指仅拷贝一个块;bs=512指块大小为512个字节。

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

1
dd if=/root/image of=/dev/had

拷贝内存内容到硬盘

1
2
dd if=/dev/mem of=/root/mem.bin bs=1024
# 指定块大小为1k

修复硬盘

1
2
3
dd if=/dev/sda of=/dev/sda
或者
dd if=/dev/hda of=/dev/hda

将一个很大的视频文件中的第i个字节的值改成0x41(也就是大写字母A的ASCII值)

1
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc

结尾总结

/dev/null和/dev/zero的区别

  • /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
  • /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
  • /dev/null,它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。

  • /dev/zero,是一个输入设备,你可你用它来初始化文件。

  • /dev/zero,是一个输入设备,你可你用它来初始化文件。
  • /dev/zero,该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
-------------本文结束感谢您的阅读-------------

本文标题:Linux dd 命令详解

文章作者:Wang Jiemin

发布时间:2019年04月22日 - 09:04

最后更新:2019年04月22日 - 10:04

原始链接:https://jiemin.wang/2019/04/22/linux-dd/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%