Linux dd 命令用于读取、转换并输出数据。
成都创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、自适应网站建设、程序开发、网站优化、微网站、小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站制作、成都网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
参数说明:
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=关键字,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swap:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
--help:显示帮助信息
--version:显示版本信息
DD(1) General Commands Manual DD(1)
NAME
dd - 转换和拷贝文件
摘要
dd [--help] [--version] [if=file] [of=file] [ibs=bytes] [obs=bytes]
[bs=bytes] [cbs=bytes] [skip=blocks] [seek=blocks] [count=blocks]
[conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror,
notrunc, sync}]
描述
当进行非强制的转换的时候,使用指定的输入和输出块大小拷贝文件
(默认是从标准输入到标准输出。)
它每次从输入读取指定大小的一个块(默认是512字节)。 如果使用 bs=bytes
选项,并且没有转换,除了指定 sync, noerror, 或 notrunc 之外,
那么dd将把全部读到的数据(可以比请求读的少) 写到独立的输出块去。
这个输出块的长度和读到的数据 完全一样,除非指定使用 sync(同步)
转换,那样的话,数据结尾处将追加NUL字符(或空格,见下)。
其他情况下,输入的时候每次读一个块,然后处理,并将
输出结果收集起来,最后写到指定大小的数据块中去。最
终的输出块可能会比指定的大小短一些。
数字值选项(以字节或块为单位)后面可以跟一个乘数:
k=1024,b=512,w=2,c=1(w和c是GNU扩展语法。最好别 使用w,因为在system
V中,它表示2,在4.2 BSD中,它
表示4)。两个或更多的数值表达式可以通过“x”乘起来。 GEU fileutils
4.0并且允许在数据块大小的叙述中使用
下列乘法后缀(用bs=,cbs=,obs=):M=1048576,G=1073741824,
同理可得T,P,E,Z,Y。D后缀表示数值是以 十进制表示的:kD=1000
MD=1000000 GD=1000000000等等。
(注意,在ls、df、du命令中,M等标记的大小是由环境
变量确定的,而在DD中,它的值是固定的。)
选项
if=file
从 file 中读而不是标准输入。
of=file
写到 file 里去而不是标准输出。除非指定 conv=notrunc ,否则, dd
将把 file 截为O字节(或由 seek= 选项指定的大小)
ibs=bytes
一次读 bytes 字节。默认是512。
obs=bytes
一次写 bytes 字节。默认是512。
bs=bytes
一次读和写 bytes 字节。这将覆盖 ibs 和 obs 设定的值(并且,设定
bs 不等于同时将 ibs 和 obs 设为同一个值,至少在 只使用 sync,
noerror 或 notrunc
转换时是这样的。因为bs规定,每个输入块都应作为单独
的数据块拷贝到输出,而不把较短的块组合到一起)。
cbs=bytes
为 block 转换和 unblock 转换指定转换块的大小。
skip=blocks
在拷贝之前,跳过输入文件的前 blocks 块,每块大小为 ibs-byte
字节。
seek=blocks
在拷贝之前,跳过输出文件的前 blocks 块,每块大小为 obs-byte
字节。
count=blocks
只拷贝输入文件的前 blocks 块(每块的大小为 ibs-byte
字节),而不是全部内容,直到文件末尾。
conv=转换"[,"转换"]..."
将文件按 转换 参数指定的方式转换(在“,”两边没有空格)。
转换方式包括:
ascii 将EBCDIC转换成ascii。
ebcdic 将ascii转换成ebcdic。
ibm 将ascii转换成alternative ebcdic。
block 每一行输入,无论长短,输出都是 cbs
字节,并且其中的“换行”(NEWLINE,即c中的'0)用
空格替换。如有必要,行尾会填充空格。
unblock
用“换行”替换每个输入块( cbs 字节大小)末尾的空格。
lcase 将大写字母转换成小写。
ucase 将小写字母转换成大写。
swab 交换每对输入字节。如果读入的字节数是奇数,最后
一个字节只是简单的复制到输出(因为没有能跟它交换的
字节了)(POSIX 1003.26,PASC翻译1003.2 3号和4号)。
noerror
发生读错误时,继续进行。
notrunc
不截断输出文件。
sync 用0填充到每个输入块的末尾,使其大小为 ibs 字节。
GNU标准选项
--help 将用法信息打印到标准输出,并成功退出。
--version
将版本信息打印到标准输出,并成功退出。
-- 结束选项列表。
环境变量
LANG, LC_ALL, LC_CTYPE和LC_MESSAGES具有其通常含义。
遵循标准
POSIX 1003.2
举例
磁带机通常不能接受任意大小的数据块,当最后一个数据片
段不能充满整个块时, dd 将出现I/O错误。用'dd if=myfile of=/dev/mytape
conv=sync' 就可以使全部内容存到磁带上。当然,这样做,把文件从磁
带上读回时回产生一个稍大些的文件,因为其尾部填充了一 些NUL(空字符)。
以上是man手册的资料
dd就是分区的拷贝操作,一个分区或者说硬盘上某些扇区的某些块(指定位置)都可以被视为一个磁带,dd就是把固定的块上保存的二进制内容做拷贝操作.
建议在bash下运行man dd 或者 dd --help.
以下请参考:
linux创建文件命令:dd命令
把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法:
CODE:[Copy to clipboard]dd 〔选项〕
QUOTE:
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。
fdformat命令
低级格式化软盘。
实例:
创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
以上是linux创建文件命令:dd的用法。
最近想在Mac上装个KaliLinux,无奈虚拟机中的Windows制作启动盘实在太慢,于是想着Mac中有没有烧录工具,百度以后发现dd命令是Mac和Linux系统的制作启动盘命令。
确保分区模式是GUID分区
以下引用百度经验:
在这里我的命令是:
将iso格式转换为dmg格式
将你的路径替换掉/dev/disk1
这一步是必须的,不然后面使用dd命令会显示资源繁忙
同理这里把你的镜像路径和磁盘路径替换掉
/dev/disk1换成/dev/rdisk1可以提高速度
烧录过程不会有任何提示信息直到烧录完成(太不人性化了!!!)
如果有窗口提示要不要推出磁盘,则使用终端来推出磁盘,然后在窗口选择ignore
用法:dd [操作数] ...
或:dd 选项
Copy a file, converting and formatting according to the operands.
N and BYTES may be followed by the following multiplicative suffixes:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000 1000, M =1024 1024, xM =M
GB =1000 1000 1000, G =1024 1024 1024, and so on for T, P, E, Z, Y.
Sending a USR1 signal to a running 'dd' process makes it
print I/O statistics to standard error and then resume copying.
18335302+0 records in
18335302+0 records out
9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s
Options are:
GNU coreutils online help:
请向 报告dd 的翻译错误
要获取完整文档,请运行:info coreutils 'dd invocation'
举个例子说明一下:
将硬盘a克隆到硬盘b :
dd if=/dev/sda of=/dev/sdb bs=4M
可能在这个过程中的速度会比较慢,但是是有原因的,因为有用的和无用的数据都要复制。
——答案来自xisaiLinux界大牛老师