Linux下dd命令常用的几个组合

来源:互联网 发布:colorpicker mac 编辑:程序博客网 时间:2024/05/19 11:46

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/tmpfile 
2.把net.i这个文件写入软盘中,并设定读/写缓冲区的数目,输入下面命令:

dd if = net.i of = /dev/fd0 bs = 16384 
3.将文件sfile拷贝到文件 dfile中

dd if=sfile of=dfile
4.创建一个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=10000dd if=proj.tar.gz of=beeper2.tar.gz bs=1k skip=10000 count=10000dd if=proj.tar.gz of=beeper3.tar.gz bs=1k skip=20000
然后恢复文件时候采用参数seek。采用的命令如下:

dd if=beeper1.tar.gz of=proj.tar.gzdd if=beeper2.tar.gz of=proj.tar.gz bs=1k seek=10000dd if=beeper3.tar.gz of=proj.tar.gz bs=1k seek=20000
如果发现恢复的文件与创建备份前的文件一直,则说明备份数据成功。skip是跳过输入文件多少字节向of指定的文件里面写数据,seek是跳过of指定的文件多少字节,吧if指定的文件写入of中。










 

0 0