来福网

dd

dd是一个Unix和类Unix系统上的命令,主要功能为转换和复制文件。

在Unix上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)就像普通文件一样,出现在文件系统中;只要在各自的驱动程序中实现了对应的功能,dd也可以读取自和/或写入到这些文件。这样,dd也可以用在备份硬件的引导扇区、获取一定数量的随机数据等任务中。dd程序也可以在复制时处理数据,例如转换字节序、或在ASCII与EBCDIC编码间互换。

dd的名字可能来源于IBM的工作控制语言(JCL)中的DD语句,意为“Data Description”(数据描述)的缩写。该命令的语句与JCL中的相似,而与其他Unix命令较不同,因此这可能是个玩笑。另一种解释是“cc”(根据命令自身的描述,为“convert and copy”(转换和复制))已经被C语言编译器(C compiler)所占。

dd命令由单一UNIX规范的一部分,IEEE标准1003.1-2008所规定。

dd的命令行语句与其他的Unix程序不同,因为它的命令行选项格式为=,而不是更标准的---=dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。

由于操作系统的不同,用法会有出入。另外,dd的一些特定功能取决于计算机系统的能力,例如直接访问内存。向运行中的dd进程发送SIGINFO信号(Linux上为USR1)可以使它将I/O统计信息打印到标准错误一次,然后继续复制(注意在OS X上,信号可能导致进程终止)。dd可以从键盘中读取标准输入。到达文件结尾时,dd将会退出。信号和EOF是由软件决定。例如,移植到Windows的Unix工具使用不同的EOF:Cygwin使用ctrl-d (通常的Unix EOF),而MKS工具箱使用ctrl-z(通常的Windows EOF)。

正如Unix哲学一样,dd只做好一件事(并被认为做得“好”)。与复杂的和高度抽象的实用程序不同,除了为不同的选项做底层决定,dd没有其它的算法。一般在每一次运行时,会改变dd的选项以分步处理一个计算机问题。

Linux上GNU coreutils提供的变种没有描述运行结束时,dd输出到标准输出消息的格式。然而,其他的实现描述了它,例如BSD上的。

“记录读入”和“记录写出”行显示了已完整传输的块数+不完整的块数,例如物理介质以不完整的块结尾,或是一个物理错误使得一个完整的块无法被读取。

块是衡量一次读取、写入和转换字节的单位。命令行选项可以为输入/读取(ibs)和输出/写入(obs)指定一个不同的块大小,尽管块大小(bs)选项会覆盖ibsobs选项。输入和输出的默认块大小为512字节(传统的磁盘块及POSIX规定的“块”大小)复制的count选项、读取的skip选项和写入的seek选项都是以块为单位。转换操作也受“转换块大小”(cbs)影响。

dd的一些用途中,块大小可能会影响表现。例如,当转换硬盘中数据时,较小的块大小通常会导致更多的字节被转换。发出许多小块的读取是一种开销的浪费,且可能会对执行性能有负面影响。较大的块大小可能会提高复制速度。但是,由于要复制的字节量是由bs×count给出的,因此不可能在一次dd命令中复制素数个字节,除非使用两个糟糕选项之一:bs=N count=1(消耗内存)或bs=1 count=N(大量读请求开销)。替代程序(见下文)允许指定字节,而不是块。在用作网络传输时,根据使用的网络协议,块大小可能会与包大小冲突。

提供给块大小的值会被解释成十进制整数,也可以加入后缀指定倍数。后缀w表示2倍,b表示512倍,k表示1024倍,M表示1024 × 1024倍,G表示1024 × 1024 × 1024倍,等等。另外,在块大小和计数参数中,一些实现也可以使用x表示乘运算。

例如,块大小bs=2x80x18b表示2 × 80 × 18 × 512 = 1474560字节,也就是一张1440 KiB软盘的确切大小。

dd命令可用于各种用途。

dd可以在文件、设备、分区和卷之间复制数据。数据可以从其中任何地方输入或输出;但输出到分区时有重要差异。此外在传输过程中,数据可以用conv选项修改以适应介质。

如果最后一个块有意外长度,试图使用cp复制整个磁盘可能会忽略掉它;然而dd却可能成功。源和目标磁盘应该具有相同的大小。

noerror选项意味着如果发生错误,程序也将继续运行。sync选项表示填充每个块到指定字节。

可以修复主引导记录。主引导记录可以转移到文件,或从中转移出来。

要复制软盘的前两个扇区:

dd if=/dev/fd0 of=MBRboot.img bs=512 count=2

后台-插件-广告管理-内容底部广告位PC端
后台-插件-广告管理-内容底部广告位手机端

相关推荐

评论

全部评论