dd.1

DD(1)

DD(1)

FreeBSD General Commands Manual

DD(1)

dd

convert and copy a file

dd [operands ...]

dd 实用程序将标准输入复制到标准输出。 输入数据以 512 字节块的形式读取和写入。 如果输入读取很短,则来自多个读取的输入被聚合以形成输出块。 完成后, dd 将完整和部分输入和输出块的数量以及截断的输入记录显示到标准错误输出。

可以使用以下操作数:

bs=n

将输入和输出块大小都设置为 n 字节,取代 ibsobs 操作数。 如果没有指定除 noerror 、 notruncsync 以外的转换值,则每个输入块将作为单个块复制到输出,而不会聚合任何短块。

cbs=n

将转换记录大小设置为 n 字节。 面向记录的转换值需要转换记录大小。

count=n

仅复制 n 个输入块。

files=n

在终止之前复制 n 个输入文件。 此操作数仅适用于输入设备是磁带时。

fillchar=c

在转换模式下或由于使用 noerrorsync 模式填充块时,使用指定的 ASCII 字符填充,而不是使用空格或 NUL

ibs=n

将输入块大小设置为 n 字节,而不是默认的 512。

if=file

从 file 而不是标准输入中读取输入。

iflag=value[,value ...]

其中 value 是以下列表中的符号之一。

fullblock

从输入文件中读取可能无法获得完整的块。 当读取返回短时,继续读取以填充块。 如果没有此标志, count 会限制在输入上调用 read(2) 的次数,而不是完全复制的块数。 不能与 conv=sync 结合使用。

direct

在输入文件上设置 O_DIRECT 标志以使读取绕过任何本地缓存。

iseek=n

在输入文件 n 块上查找。 这与 skip=n 同义。

obs=n

将输出块大小设置为 n 字节,而不是默认的 512。

of=file

将输出写入 file 而不是标准输出。 除非指定了 notrunc 转换值,否则任何常规输出文件都会被截断。 如果查找输出文件的初始部分(参见 oseek 操作数),则输出文件在该点被截断。

oflag=value[,value ...]

其中 value 是以下列表中的符号之一。

fsync

在输出文件上设置 O_FSYNC 标志以使写入同步。

sync

在输出文件上设置 O_SYNC 标志以使写入同步。 这与 fsync 值同义。

direct

在输出文件上设置 O_DIRECT 标志以使写入绕过任何本地缓存。

oseek=n

在输出文件上查找 n 个块。 这与 seek=n 同义。

seek=n

在复制之前从输出的开头寻找 n 个块。 在非磁带设备上,使用 lseek(2) 操作。 否则,将读取现有块并丢弃数据。 如果用户没有磁带的读取权限,则使用磁带 ioctl(2) 函数调用对其进行定位。 如果查找操作超过文件末尾,则从当前文件末尾到指定偏移量的空间被 NUL 字节块填充。

skip=n

在复制之前从输入的开头跳过 n 个块。 在支持搜索的输入上,使用 lseek(2) 操作。 否则,读取并丢弃输入数据。 对于管道,读取正确的字节数。 对于所有其他设备,读取正确数量的块,而不区分正在读取的部分或完整块。

speed=n

将复制速度限制为每秒 n 字节。

status=value

其中 value 是以下列表中的符号之一。

noxfer

不要将传输统计信息打印为状态输出的最后一行。

none

不要打印状态输出。 显示错误消息;信息性消息不是。

progress

每秒打印一次基本传输统计信息。

conv=value[,value ...]

其中 value 是以下列表中的符号之一。

ascii, oldascii

unblock 值相同,只是在转换记录之前将字符从 EBCDIC 转换为 ASCII 。 (如果还指定了操作数 cbs ,则这些值意味着 unblock 。) ASCII 有两个转换映射。 ascii 值指定了与 AT&T System V UNIX 兼容的推荐值。 oldascii 值指定用于历史 AT&T UNIX 和 pre-4.3BSD-Reno 系统的值。

block

将输入视为与输入和输出块边界无关的换行符或文件结尾终止的可变长度记录的序列。 任何尾随换行符都将被丢弃。每个输入记录都转换为固定长度的输出记录,其中长度由 cbs 操作数指定。 短于转换记录大小的输入记录用空格填充。 长于转换记录大小的输入记录将被截断。 被截断的输入记录的数量(如果有)在复制完成时报告给标准错误输出。

ebcdic, ibm, oldebcdic, oldibm

block 值相同,只是在转换记录后将字符从 ASCII 转换为 EBCDIC 。 (如果还指定了操作数 cbs ,则这些值意味着 block 。) EBCDIC 有四个转换映射。 值 ebcdic 指定与 AT&T System V UNIX 兼容的推荐值。 值 ibm 是一个稍微不同的映射,它与 AT&T System V UNIX ibm 值兼容。 oldebcdicoldibm 值是用于历史 AT&T UNIX 和 pre-4.3BSD-Reno 系统的映射。

fdatasync

在关闭输出文件之前对其执行 fdatasync(2) 。

fsync

在关闭输出文件之前对其执行 fsync(2) 。

lcase

将大写字符转换为小写字符。

pareven, parnone, parodd, parset

输出具有指定奇偶校验的数据。 除非还指定了 EBCDIC 到 ASCII 的转换,否则输入上的奇偶校验位将被去除。

noerror

不要停止处理输入错误。 当发生输入错误时,将按照与标准完成消息相同的格式将诊断消息和当前输入和输出块计数写入标准错误输出。 如果还指定了 sync 转换,则任何丢失的输入数据都将替换为 NUL 字节(如果指定了面向块的转换值,则替换为空格)并作为普通输入缓冲区处理。 如果指定了 fillchar 选项,命令行中提供的填充字符将覆盖填充字符的自动选择。 如果未指定 sync 转换,则从输出中省略输入块。 在不是磁带或管道的输入文件上,文件偏移量将使用 lseek(2) 定位到发生错误的块之后。

notrunc

不要截断输出文件。 这将保留输出文件中未由 dd 显式写入的任何块。 磁带不支持 notrunc 值。

osync

将最终输出块填充到完整的输出块大小。 如果转换后输入文件不是输出块大小的倍数,则此转换会强制最终输出块与前面的块大小相同,以便在需要写入常规大小块的设备上使用。 此选项与 bs=n 块大小规范的使用不兼容。

sparse

如果一个或多个输出块仅包含 NUL 字节,请尝试按所需空间查找输出文件,而不是用 NUL- 填充它们,从而产生稀疏文件。

swab

交换每对输入字节。 如果输入缓冲区的字节数为奇数,则在交换期间将忽略最后一个字节。

sync

将每个输入块填充到输入缓冲区大小。 如果指定了面向块的转换值,则空格用于填充字节,否则使用 NUL 字节。

ucase

将小写字符转换为大写字符。

unblock

将输入视为与输入和输出块边界无关的固定长度记录序列。 输入记录的长度由 cbs 操作数指定。 任何尾随空格字符都将被丢弃,并附加一个换行符。

如果指定了大小或速度,则需要十进制、八进制或十六进制字节数。 如果数字以 “b”, “k”, “m”, “g”, “t”, “p” 或 “w” 结尾,则该数字乘以 512, 1024 (1K), 1048576 (1M), 1073741824 (1G), 1099511627776 (1T), 1125899906842624 (1P) 或整数中的字节数。 两个或多个数字可以用 “x” 分隔以表示产品。

完成后, dd 将完整和部分输入和输出块的数量、截断的输入记录和奇数长度的字节交换块显示到标准错误输出。 部分输入块是读取的小于输入块大小的块。 部分输出块是写入小于输出块大小的块。 到磁带设备的部分输出块被认为是致命错误。 否则,将写入块的其余部分。 字符设备的部分输出块将产生警告消息。 截断输入块是指指定了面向可变长度记录的转换值并且输入行太长而无法放入转换记录或没有换行符终止的输入块。

通常,来自输入或转换或两者的数据被聚合到指定大小的输出块中。 在达到输入结束后,任何剩余的输出都被写入一个块。 这意味着最终的输出块可能比输出块的大小要短。

如果 dd 接收到 SIGINFO (请参阅 stty(1) 的 status 参数)信号,则当前输入和输出块计数将以与标准完成消息相同的格式写入标准错误输出。 如果 dd 收到 SIGINT 信号,当前输入和输出块计数将以与标准完成消息相同的格式写入标准错误输出,并且 dd 将退出。

The dd utility exits 0 on success, and >0 if an error occurs.

检查磁盘驱动器是否包含坏块:

dd if=/dev/ada0 of=/dev/null bs=1m

刷新磁盘驱动器,以防止当前可恢复的读取错误发展为不可恢复的读取错误:

dd if=/dev/ada0 of=/dev/ada0 bs=1m

从文件中删除奇偶校验位:

dd if=file conv=parnone of=file.txt

检查文件上的(偶数)奇偶校验错误:

dd if=file conv=pareven | cmp -x - file

要创建 Mode-1 CD-ROM(数据 CD-ROM 磁盘的常用格式)的映像,请使用 2048 字节的块大小:

dd if=/dev/cd0 of=filename.iso bs=2048

将文件系统映像写入记忆棒,必要时用零填充末尾到 1MiB 边界:

dd if=memstick.img of=/dev/da0 bs=1m conv=noerror,sync

cp(1), mt(1), recoverdisk(1), tr(1), geom(4), trim(8)

dd 实用程序有望成为 IEEE Std 1003.2 (“POSIX.2”) 标准的超集。 filesstatus 操作数以及 ascii, ebcdic, ibm, oldascii, oldebcdicoldibm 值是对 POSIX 标准的扩展。

dd 命令出现在 Version 5 AT&T UNIX 中。

geom(4) 子系统中的保护机制可能会阻止超级用户将块写入磁盘。 可以在 geom(4) 手册页中找到临时禁用这些保护机制的说明。

June 4, 2020

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区