网络推荐



本广告位招租!

推荐给好友 上一篇 | 下一篇

dd参数详解

先简要介绍dd的参数,后边通过几个实例介绍dd的应用,参考了其他网友的资料,在此一并感谢BSD爱好者乐园S'?H8W]J^]

[n g-u)`:C小菜水平有限文中有什么错误请大家指正,关于dd还有什么好的使用方法,可以贴出来,小菜会及时更新BSD爱好者乐园t3Y*K;[B Oo0s

]oUP|)nQ
4xl6}6z/g)a;ddd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。BSD爱好者乐园obi` r~N

n3U{!b'OWz]1. 命令简介
"~TT;Ej| @]Co,E
4O&Y?O8v$jeddd 的主要选项:BSD爱好者乐园1uj_%{as B
BSD爱好者乐园5P E;]e._H8g%xn
指定数字的地方若以下列字符结尾乘以相应的数字:
{ l RXO F nBSD爱好者乐园Z k Q%nU.XC6sL"u)D
b=512, c=1, k=1024, w=2, xm=number mBSD爱好者乐园 @!Oz$yU-t\w
BSD爱好者乐园1zoR:\YI+l
if=file
`(mCjCwBSD爱好者乐园B ok$A][uU y
输入文件名,缺省为标准输入。
j"lyd$z7lg
,X]H"Ng ?of=file
9]m4P0Kj!{+VD^ y
T SZ0S!d ]输出文件名,缺省为标准输出。BSD爱好者乐园-yl*ac/Mb'r}&h
BSD爱好者乐园I$E5@*y.p-D S
ibs=bytes
]4E_.Brl'a
dp|Ui!@一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。BSD爱好者乐园|/u |;i3w~6EE{d;p
BSD爱好者乐园8eqyn~$xJG w(s2_
obs=bytesBSD爱好者乐园2sl+SK a$e&I
BSD爱好者乐园 S6M5}D@ ^0GY!w+Dm
一次写 bytes 个字节(即一个块大小为 bytes 个字节)。BSD爱好者乐园(f+Wl!e {(H/fB;v8k`

?9C`:j,}MBAZ(I/_#Jbs=bytesBSD爱好者乐园m9?7p6St-i4n

*]vX2fM^H同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。BSD爱好者乐园0cQ'P%`XZ?n

A@(d0VYBcbs=bytesBSD爱好者乐园 J+^\5Y I-d%z J
BSD爱好者乐园/}I*Ub^&^ S+Z
一次转换 bytes 个字节,即转换缓冲区大小。BSD爱好者乐园)jhZ-~B7Y(I.x
BSD爱好者乐园.{ };B/g2m+A
skip=blocksBSD爱好者乐园Ry_g3c8{1`t
BSD爱好者乐园j?.t#k1t
从输入文件开头跳过 blocks 个块后再开始复制。
n|[&Q2`9}#aBSD爱好者乐园PP"FhUX E1r
seek=blocks
,q+~q9v"_~ {5d+m$_*V
d3G7zJ W从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。
i2\&R7a1Y c7J1xBSD爱好者乐园 n _2z{"b a"?`
count=blocksBSD爱好者乐园 } ypGR
BSD爱好者乐园k k;Hw*} MM
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。BSD爱好者乐园?Zi$P+V sWn

1S"pp dfa`M!^conv=conversion[,conversion...]BSD爱好者乐园Alo](MK8F f
BSD爱好者乐园;f)|+D:P3|K,M
用指定的参数转换文件。BSD爱好者乐园A-bz-E:ZIhN

o ^9AS#Vj$g转换参数:
\ J~!})r;s |?XBSD爱好者乐园@kYA#n+G6A
ascii 转换 EBCDIC 为 ASCII。
]6Kuj,ygh
7Z7I-owUc.ypebcdic 转换 ASCII 为 EBCDIC。BSD爱好者乐园7d+k"YH6[1Wv#c
BSD爱好者乐园 q6Fw"fg3pC"c~-|8~s
ibm 转换 ASCII 为 alternate EBCDIC.BSD爱好者乐园~.Gg+I xs p Pi
BSD爱好者乐园mX.J"u \NP9TY(?:[-N
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。BSD爱好者乐园XO} ?r)v H
BSD爱好者乐园7aD8Iw9K4c u5~d
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
iig#})w9qW G
0|#B];vW}A2~lcase 把大写字符转换为小写字符。BSD爱好者乐园 tu(^svm&n}

&qPgI)O G;x&W)A,t*oucase 把小写字符转换为大写字符。
1b1K4n0BS RTc7YBSD爱好者乐园bW0j#Z \
swab 交换输入的每对字节。BSD爱好者乐园)zP1Qm`su1Q

"ut D*r-m O {4}noerror 出错时不停止。BSD爱好者乐园'G{1|ny6m/_V
BSD爱好者乐园 k6{3X:__
notrunc 不截短输出文件。BSD爱好者乐园{eL9vVf4Tf c

(i&[ c6H @ i_Rg$xsync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。BSD爱好者乐园Yw+IsL1r(dyu*k\+|+}
BSD爱好者乐园SzR3O[(|%G*|

2LWG j.rG b2.实例分析
4} JD;W.[*EG2n ]VBSD爱好者乐园J,Xf!pE
        2.1.数据备份与恢复
J8Oh*P'B6V.rr(["cBSD爱好者乐园?wPZ/WG
2.1.1整盘数据备份与恢复BSD爱好者乐园 Sl O1\~!v"T3y2d
BSD爱好者乐园 }E%bTK Di![
备份:BSD爱好者乐园F.b&Vw|u
BSD爱好者乐园+rQ$U6wa-n f+g
dd if=/dev/hdx of=/dev/hdyBSD爱好者乐园U4D9v^0b+cZ#tE

~H-O__ cp%j.o z-m8| G将本地的/dev/hdx整盘备份到/dev/hdyBSD爱好者乐园r:b8O X(K g jk7H
BSD爱好者乐园:\BJS]%c(Oi
BSD爱好者乐园 g(U?"Af,m:z c
dd if=/dev/hdx of=/path/to/imageBSD爱好者乐园yC3a7E;I7C1q
BSD爱好者乐园~)d#t.n6d!^*P*ug
将/dev/hdx全盘数据备份到指定路径的image文件BSD爱好者乐园0m"z4QCsq8t
BSD爱好者乐园U$\N"N)bS

j/[d,m}mfdd if=/dev/hdx | gzip >/path/to/image.gz
sg S4sv%HRp)A}BSD爱好者乐园q4Tp'Tsdp"e
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径BSD爱好者乐园6~(?1tX\X
恢复:
3B5JGT5uX1R5[
)lO3r;?8rdd if=/path/to/image of=/dev/hdxBSD爱好者乐园3PLv,~N3G4e
BSD爱好者乐园X/O,O0M3Bb_8g
将备份文件恢复到指定盘BSD爱好者乐园!~.LG gw&Q3@Z"x Fa C
BSD爱好者乐园S6Oe4a.px0u
gzip -dc /path/to/image.gz | dd of=/dev/hdxBSD爱好者乐园#a Vp;EW-?Fv(~2u3\
BSD爱好者乐园!l9a+YB8?;O{5q W
将压缩的备份文件恢复到指定盘BSD爱好者乐园9qd9y:Qs
BSD爱好者乐园:Ft9ryh!D

X3XY8]%n;J/`BSD爱好者乐园?Ay;gMlp\C'@#~
2.1.2.利用netcat远程备份
;cw.^j&vTvK?
{zy&vH1hkR
] J9Un(cN&Xdd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
vp l"J1}#in| ] Y,XwBSD爱好者乐园sm\hS w6}
在源主机上执行此命令备份/dev/hdaBSD爱好者乐园5Dx8S j IN6Q|o&^0G
BSD爱好者乐园}M}$e3t9F

dT*aP#F(i3v2Unetcat -l -p 1234 | dd of=/dev/hdc bs=16065bBSD爱好者乐园,Ooi6t c~1}`"R7N;]c

(c1P9s @ vN0R(lD在目的主机上执行此命令来接收数据并写入/dev/hdc
3\:MrKI6S,`#kBSD爱好者乐园-c]0P_[CT
BSD爱好者乐园3~ S(Ki~3p/_0E:e TxRK
netcat -l -p 1234 | bzip2 > partition.imgBSD爱好者乐园DF \7U Q
                netcat -l -p 1234 | gzip > partition.img
$i7`^k%db:B;X;g-~BSD爱好者乐园sx#k@:ad
以上两条指令是目的主机指令的变化分别采用bzip2  gzip对数据进行压缩,并将备份文件保存在当前目录。BSD爱好者乐园V `#M y/t-B2O5G$k.L*\
BSD爱好者乐园Il*mM!o$O+u
2.1.3.备份MBR
2iI4f:?"NYgL2Q2N
R7Jr$X nW \  备份:
R-i'nZb$[6?BSD爱好者乐园Ii0t+m%["OM
dd if=/dev/hdx of=/path/to/image count=1 bs=512
!w0y&nks%F:~BSD爱好者乐园fLK&R;d"_0G
备份磁盘开始的512Byte大小的MBR信息到指定文件BSD爱好者乐园!s4b*A)c'gr
                恢复:BSD爱好者乐园YH _:R*[!m2H?J
BSD爱好者乐园{*\ r*wH^ g$E I a
BSD爱好者乐园4R7_:AJs B7LH ^i `z
dd if=/path/to/image of=/dev/hdx
W}] D(H;Q~
!cQ&Nj4a将备份的MBR信息写到磁盘开始部分BSD爱好者乐园z3Kd.x"Y[Qs&FV

K @@-z w m"W.yBSD爱好者乐园s z }v+v5tI{$s-vMt|
BSD爱好者乐园1~h8LD0ix2k/|3a
2.1.4.备份软盘BSD爱好者乐园M5W@1v8v)C[

a b] a a:\3?!Mo
{"jl+v(Cf~#O%g9g
S ysZ v%olF/X;c(Edd if=/dev/fd0 of=disk.img count=1 bs=1440kBSD爱好者乐园@|4\9x)IJ9u*g

\ \$e-o C T%_m将软驱数据备份到当前目录的disk.img文件
-@)r%O'[&o,I fo
I9]#o8B4C%s*KI
;GWj @!v4SMyz Jm
0n%K2[$X3[ p ?D2.1.5.拷贝内存资料到硬盘
+q'W']2R+oO |{
~Sf9hxH6GT,MBSD爱好者乐园[&~$v'vS ry

!~/L'im)}5Odd if=/dev/mem of=/root/mem.bin bs=1024BSD爱好者乐园0?#A;qk"L1`zk$U
BSD爱好者乐园-Er2jn'G
将内存里的数据拷贝到root目录下的mem.bin文件
y'{R\suj7rM@ hBSD爱好者乐园wMGW m[
               BSD爱好者乐园z+Yd1QwUc4P
BSD爱好者乐园(im$U.wF
2.1.6.从光盘拷贝iso镜像BSD爱好者乐园(vn.q(IU"x+|;f6d

1NQ^WA~
.F |8g4N slcBSD爱好者乐园]"m A3wNq q
dd if=/dev/cdrom of=/root/cd.iso
7z s{4J^;_BSD爱好者乐园*]8h.O,c]ID
拷贝光盘数据到root文件夹下,并保存为cd.iso文件               
DU*}wn&vl2SBFBSD爱好者乐园F7Z_!^-@
        BSD爱好者乐园i;qNY~ K.^|

'KjMo4b
2Pf+Fy,L0m1N2.2.增加Swap分区文件大小
%Ry+j5m!`/c/fA}
$G,~,s`yWRb Add if=/dev/zero of=/swapfile bs=1024 count=262144
TN'P-Ui8]BSD爱好者乐园i1Nt!K?/E;xk7B
创建一个足够大的文件(此处为256M)BSD爱好者乐园1a0Q0Tro-JT'NQ

5Dg`+c @xr*Lmkswap /swapfile
FZr SaB)bQ$i9J
8eM,|w)@把这个文件变成swap文件BSD爱好者乐园 G.@n,n gX~

x Rm9Yb,b'GBSD爱好者乐园!|$P LN-D7f
BSD爱好者乐园@4dM2N |9hV2p4D
swapon /swapfileBSD爱好者乐园%mU4N&y*n2^
BSD爱好者乐园{W4B&or!|
启用这个swap文件BSD爱好者乐园^}u n!r

\8N3xt f}9B)r@ x(L
[:RS#P,`-@ S/swapfile swap swap defaults 0 0BSD爱好者乐园8I P[6j;zx
BSD爱好者乐园!{5q m,W(c%m
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行BSD爱好者乐园YK,pjz8P*k

4l&|2o0Wx'@?&GBSD爱好者乐园uB+LS~az,v~z j

-v0Dt3ohZ8Ly.LwBSD爱好者乐园OHzn| P+Y
2.3.销毁磁盘数据BSD爱好者乐园3M XZo1I"O"j`~;M
BSD爱好者乐园*P ]rY6E#v ?rW

2gD'f!o!EAS[x"R?dd if=/dev/urandom of=/dev/hda1BSD爱好者乐园(G$N"rrxx2`t
BSD爱好者乐园B^X$j[ @ ?;x
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。BSD爱好者乐园.~*BoDvL5Ne
BSD爱好者乐园5Bw$[0N3L z
BSD爱好者乐园weP'N7LE
BSD爱好者乐园;DOU1z2fzs

dkW(^9m!E2.4磁盘管理BSD爱好者乐园`m&}"K']I(D

+[nP?;h6j;bO2.4.1.得到最恰当的block size
#L|h&R1~u-~'W|1w
]} ['J WwA'`"]dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
4g n*eV O{B \)`                dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
7j@O9aBR$? Y7q                dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file        BSD爱好者乐园8Q^iHQW)E+F L Q
                dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.fileBSD爱好者乐园N+}j,Oq7a!Y,Q7|

~r `G3{ u5U+V通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小BSD爱好者乐园A-t)kJ.l'P
BSD爱好者乐园 pVB;Q T
BSD爱好者乐园wr+nD+_ kC
2.4.2测试硬盘读写速度
Kp~2l&CR J@&cBSD爱好者乐园S9Y$l|{
BSD爱好者乐园/~3~R0O"E'hmA"AiUi
dd if=/root/1Gb.file bs=64k | dd of=/dev/nullBSD爱好者乐园s5Z%D^'`e+q {k
                dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000BSD爱好者乐园8T*S5^;M%]"KM*A*\3@

qCny e通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度        
0R"Bj DS7{ i9S
+e6`VD!j6vr5]               
Y%TPL"r#X)Y
+o Ymq!xH2.4.3.修复硬盘
zu0XZ6U\GBSD爱好者乐园 Bi~ynF5a%d
BSD爱好者乐园'KK&rZe(wx.T
dd if=/dev/sda of=/dev/sda
T'^f"u#]8IBSD爱好者乐园:I3~8t6B@{:a\D$p
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
 

评分:0

我来说两句

seccode