dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd [options]:
if =输入文件 (或设备名称) of=输出文件(或设备名称) ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数 skip = blocks 跳过读入缓冲区开头的ibs*blocks块 obs = bytes 一次写入bytes字节,即写入缓冲区的字节数 bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs) cbs = byte 一次转换bytes字节 count=blocks 只拷贝输入的blocks块 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填充)。测试的几个例子:
1.要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:
dd if=/dev/fd0 of=/tmp/tmpfile dd if=/tmp/tmpfile of=/dev/fd0 rm /tmp/tmpfile2. 把net.i这个文件写入软盘中,并设定读/写缓冲区的数目,输入下面命令:
dd if = net.i of = /dev/fd0 bs = 163843. 将文件sfile拷贝到文件 dfile中
dd if=sfile of=dfile4. 创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
warnning:
/dev/null,外号叫无底洞,你可以向它输出任何数据,它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
dd命令备份数据,使用参数ship:
比如备份一个30000k的文件proj.tar.gz。希望把文件分为三部分进行备份,第一份10000k,第二份10000k,第三份为剩下的。可以进行下面的操作:
dd if=proj.tar.gz of=beeper1.tar.gz bs=1k count=10000 dd if=proj.tar.gz of=beeper2.tar.gz bs=1k skip=10000 count=10000 dd if=proj.tar.gz of=beeper3.tar.gz bs=1k skip=20000然后恢复文件时候采用参数seek。采用的命令如下:
dd if=beeper1.tar.gz of=proj.tar.gz dd if=beeper2.tar.gz of=proj.tar.gz bs=1k seek=10000 dd if=beeper3.tar.gz of=proj.tar.gz bs=1k seek=20000如果发现恢复的文件与创建备份前的文件一直,则说明备份数据成功。skip是跳过输入文件多少字节向of指定的文件里面写数据,seek是跳过of指定的文件多少字节,吧if指定的文件写入of中。