您的位置:首页 > 其它

dd命令详解

2015-12-15 15:16 183 查看


定义

DD是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

dd指令使用

语法格式

dd [option]

dd指令选项详解

if=file:输入文件名,缺省为标准输入

of=file:输出文件名,缺省为标准输出

ibs=bytes:一次读入 bytes 个字节(即一个块大小为 bytes 个字节)

obs=bytes:一次写 bytes 个字节(即一个块大小为 bytes 个字节)

bs=bytes:同时设置读写块的大小为 bytes ,可代替 ibs 和 obs

cbs=bytes:一次转换 bytes 个字节,即转换缓冲区大小

skip=blocks:从输入文件开头跳过 blocks 个块后再开始复制

seek=blocks:从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

count=blocks:仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数

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

conv=ebcdic:把ASCIl码转换为EBCDIC码。

conv=ibm:把ASCIl码转换为alternate EBCDIC码。

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

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

conv=ucase:把字母由小写转换为大写。

conv=lcase:把字母由大写转换为小写。

conv=notrunc:不截短输出文件。

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

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

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

注意:指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number m,kB=1000,K=1024,MB=1000*1000,M=1024*1024,GB=1000*1000*1000,G=1024*1024*1024

dd使用实例

假设了如下的情况:

要备份的数据文件:30720KB

block 0 =8 KB.

raw offset 64 KB.

设定 bs=8k

1、从raw设备备份到raw设备

dd if=/dev/rsd1b of=/dev/rsd2b bs=8k skip=8 seek=8 count=3841

2、裸设备到文件系统

dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841

3、文件系统到裸设备

dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8

4、文件系统到文件系统,你可以为了提升I/O把bs设为较高的数值

dd if=/oracle/dbs/df1.dbf of=/backup/df1.dbf bs=1024k

5、备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径(bzip2工具也一样可使用)

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

6、生成1G的虚拟块设备Sparse File(稀疏文件)

dd if=/dev/zero of=1G.img bs=1M seek=1000 count=0

Sparse File是什么,稀疏文件,也就是说,是一个拥有空的空间的文件,磁盘块将并没分配给这些文件。如果这些空的空间填满ASCII的NULL字符,那么文件才会是实际的大小。

7、拷贝光盘数据到backup文件夹下,并保存为cd.iso文件,再进行刻录

dd if=/dev/cdrom of=/backup/cd.iso

cdrecord -v cd.iso

8、将内存里的数据拷贝到backup目录下的mem.bin文件

dd if=/dev/mem of=/backup/mem.bin bs=1024

9、将软驱数据备份到当前目录的disk.img文件

dd if=/dev/fd0 of=disk.img count=1 bs=1440k

10、将备份文件恢复到指定盘

dd if=/backup/df1.dbf of=/dev/rsd1b

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

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

12、测试磁盘写能力

time dd if=/dev/zero of=/test.dbf bs=8k count=300000

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

13、测试磁盘读能力

time dd if=/dev/sdb1 of=/dev/null bs=8k

因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

14、测试同时读写能力

time dd if=/dev/sdb1 of=/test1.dbf bs=8k

这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb1是读,对/test1.dbf是写),假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力

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

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

16、恢复MBR

dd if=/mnt/windows/linux.lnx of=/dev/hda bs=512 count=1

17、 得到最恰当的block size。 通过比较dd指令输出中所显示的命令执行时间(选时间最少的那个),即可确定系统最佳的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

本文转自:http://czmmiao.iteye.com/blog/1748748
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: