-
dd if=devzero of=
的含义是什
么?
Linux
下的
dd
命令使用详解
p>
一、
dd
命令的解释
dd
:用指定大小的块拷贝一个
文件,并在拷贝的同时进行指
定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数<
/p>
字:
b=512
;
c=1
;
k=1024
;
w=2
参数注释:
1. if=
文件名:
输入文件名,
缺省为标准输入。
即指定源文件。
p>
< if=input file
>
2. of=
文件名:输出文件名,
缺省为标准输出。即指定目的
文件。
<
of=output file
>
3. ibs=bytes
:
一次读入
bytes
个字节,
即指定一个块大小
为
bytes
个字节。
obs=bytes
:一次输出
bytes
个字节,即指定一个块大小为
bytes
个字节。
bs=bytes
:同时设置读入
/
输出的块大小为
bytes
个字节。
4. cbs=bytes
:一次转换
bytes
个字节,即指定转换缓冲区
大小。
< br>
5. skip=blocks
:从输入文件开头跳过
blocks
个块后再开始
复制。
6. se
ek=blocks
:从输出文件开头跳过
blocks
个块后再开始
复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份<
/p>
到磁盘或磁带时才有效。
7. count=blocks
:仅拷贝
blocks
个块,块大小等于
ibs
指定
的字节数。
8.
conv=conversion
:用指定的参数转换文件。
ascii
:转换
ebcdic
为
ascii
ebcdic
:转换
ascii
为
ebcdic
ibm
:
转换
ascii
为
alternate
ebcdic
block
:把每一行转换为长度为
cbs
,不足部分用
空格填充
unblock
:使每一行的长度都为
cbs
,不足部分用空格填充
lcase
:把大写字符转换为小写字符
ucase
< br>:把小写字符转换为大写字符
swab
:交换输入的每对字节
noerror
:出错时不停止
notrunc
:不截短输出文件
sync
:
将每个输入块填充到
ibs
个字节,
不足部分用空
(
NUL
)
字符补齐。
二、
dd
应用实例
1.
将本地的
/dev/hdb
整盘备份到
/dev/hdd
#dd
if=/dev/hdb of=/dev/hdd
2.
将
/d
ev/hdb
全盘数据备份到指定路径的
image
文件
#dd
if=/dev/hdb
of=/root/image
3.
将备份文件恢复到指定盘
#dd
if=/root/image of=/dev/hdb
4.
备份
/
dev/hdb
全盘数据,
并利用
gz
ip
工具进行压缩,
保存
到指定路径<
/p>
#dd
if=/dev/hdb | gzip > /root/
5.
将压缩的备份文件恢复到指定盘
#gzip
-dc /root/ | dd of=/dev/hdb
6.
备份与恢复
MBR
备份磁盘开始的
512
个字节大小的
MBR
信息到指定文件:
#dd
if=/dev/hda of=/root/image count=1
bs=512
count=1
指仅拷贝一个块;
bs=512
指块大小为
512
个字节。
< br>
恢复:
#dd
if=/root/image of=/dev/had
将备份的
MBR
信息写到磁盘开始部分
7.
备份软盘
#dd
if=/dev/fd0 of= count=1 bs=1440k
(
即块大小为
1.44M)
8.
拷贝内存内容到硬盘
#dd
if=/dev/mem of=/root/ bs=1024
(
指定块大小为
1k)
9.<
/p>
拷贝光盘内容到指定文件夹,并保存为
文
件
#dd
if=/dev/cdrom(hdc)
of=/root/
10.
p>
增加
swap
分区文件大小
第一步:创建一个大小为
256M
的文件:
#dd
if=/dev/zero
of=/swapfile bs=1024 count=262144
第二步:把这个文件变成
swap<
/p>
文件:
#mkswap
/swapfile
第三步:启用这个
swap
文件:
#swapon
/swapfile
第四步:
编辑
/etc/fstab
文件,
使在每次开机时自动加载
swap
文件:
/swapfile
swap
swap
default
0 0
11.
销毁磁盘数据
#dd
if=/dev/urandom of=/dev/hda1
注意:利用随机的数据填充硬盘,
在某些必要的场合可以用
来销毁数据。
12.
测试硬盘的读写速度
#dd
if=/dev/zero bs=1024 count=1000000
of=/root/
#dd
if=/root/ bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行
时间,可以计算出硬盘的
读、写速度。
13.
确定硬盘的最佳块大小:
#dd
if=/dev/zero bs=1024 count=1000000
of=/root/
#dd
if=/dev/zero bs=2048 count=500000
of=/root/
#dd
if=/dev/zero bs=4096 count=250000
of=/root/
#dd
if=/dev/zero bs=8192 count=125000
of=/root/
通过比较以
上命令输出中所显示的命令执行时间,即可确定
系统最佳的块大小。
14.
修复硬盘:
#dd
if=/dev/sda of=/dev/sda
或
dd
if=/dev/hda
of=/dev/hda
当硬盘
较长时间
(
一年以上
)
放置不使用后,磁盘上会产生
magnetic flux
< br>point
,当磁头读到这些区域时会遇到困难,并可能导致
I/O
错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬
< br>盘报废。上边的命令有可能使这些数
据起死回生。并且这个过程是安全、高效的。
15.
利用
netcat
远程备份
#dd
if=/dev/hda
bs=16065b | netcat < targethost-IP
> 1234
在源主机上执行此命令备份
/dev/hda
#netcat
-l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入
/dev/hdc
#netcat
-l -p 1234 | bzip2 >
#netcat
-l -p 1234 | gzip
>
以上两条指令是目的
主机指令的变化分别采用
bzip2
、
gzip
对数据进行压缩,并将备份文件保存在当前目录。
将一个很大的视频文件中的第
i
p>
个字节的值改成
0x41
(也就
是大写字母
A
的
ASCI
I
值)
echo
A | dd
of=bigfile seek=$$i bs=1 count=1 conv=notrunc
三、
/dev/null
和
/dev/zero
的区别
/dev/null
,外号叫无底洞,你可以向它输出任何数据,它通
吃,并且不会撑着!
/dev/zero
,是一个输入设备,你可你用它来初始化文件。该
设备无穷尽地提供
0
,可以使用任何你需要的
数目——设备
提供的要多的多。他可以用于向设备或文件写入字符串
0
。
/dev/null------
它是空设备,也称为位桶(
b
it
bucket
)
。
任何写入它的输出都会被抛弃。
如果不想让消息以
标
准输出显示或写入文件,那么可以将消息重定向到位桶。
#if=/dev/zero
of=./ bs=1k count=1
#ls
–
l
total 4
-rw-r--r--
1
oracle
dba
1024 Jul 15
16:56
#find
/ -name
access_log
2>/dev/null
3.1
使用
/dev/null
把
/de
v/null
看作
黑洞
,
它等价于一个只写文件,
所有写入
它的内容都会永远丢失
.
,<
/p>
而尝试从它那儿读取内容则什么也
读不到。然而,
/dev/null
对命令行和脚本都非常的有用<
/p>
l
禁止标准输出
#cat
$$filename
>/dev/null
-
-
-
-
-
-
-
-
-
上一篇:圣经中的爱情名言(中英翻译)
下一篇:LTE典型业务流程