作用:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
选项: 指定数字的地方若以下列字符结尾乘以相应的数字:
b=512,c=1,k=1024,w=2,xm=number m
if=file 输入文件名,缺省为标准输入。
of=file 输出文件名,缺省为标准输出。
ibs=bytes 一次读入bytes个字节(即一个块大小为bytes个字节)。
obs=bytes 一次写bytes个字节(即一个块大小为bytes个字节)。
bs=bytes 同时设置读写块的大小为bytes,可代替ibs和obs。
cbs=bytes 一次转换bytes个字节,即转换缓冲区大小。
skip=blocks 从输入文件开头跳过block个块后再开始复制。
seek=blocks 输出文件开头跳过blocks个块后再开始复制。
(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks 仅拷贝blocks个块,块大小等于ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换EBCDIC为ASCII
ebcdic 转换ASCII为EBCDIC
ibm 转换ASCII为alternate EBCDIC
block 把每一行转换为长度为cbs的记录,不足部分用空格填充。
unblock 使每一行的长度都为cbs,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
案例分析:
1.数据备份与恢复
(1)整盘数据备份与恢复
备份:
将本地的/dev/hdx整盘备份到/dev/hdy:
dd if=/dev/hdx of=/dev/hdy
将/dev/hdx全盘数据备份到指定的路径的image文件:
dd if=/dev/hdx of=/path/image
将/dev/hdx全盘数据备份,并利用gzip工具进行压缩,保存到指定路径:
dd if=/dev/hdx | gzip > /path/image.gz
恢复:
将备份文件恢复到指定盘:
dd if=/path/image of=/dev/hdx
将压缩的备份文件恢复到指定盘:
gzip -dc /path/image.gz | dd of=/dev/hdx
(2)利用netcat远程备份
在源主机上执行此命令备份/dev/hda:
dd if=/dev/hda bs=16065b | netcat <targethost-IP> 1234
在目的主机上执行此命令来接收数据并写入/dev/hdc:
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
以下两条指令是目的主机指令的变化,分别采用bzip2和gzip对数据进行压缩,并将备份文件保存在当前目录:
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
(3)备份MBR
备份:
dd if=/dev/hdx of=/path/image count=1 bs=512
恢复:
dd if=/path/image of=/dev/hdx
(4)备份软盘
dd if=/dev/fd of=disk.img count=1 bs=1440K
(5)拷贝内存资料到硬盘
dd if=/dev/mem of=/path/mem.bin bs=1024
(6)从光盘拷贝ISO镜像
dd if=/dev/cdrom of=/path/cd.iso
2.增加swap分区文件大小
dd if=/dev/zero of=/swapfile bs=1024 count=262144 (注:此处为256M)
mkswap /swapfile
swapon /swapfile
在/etc/fstab文件中增加:/swapfile swap swap default 0 0
3.销毁磁盘数据:
dd if=/dev/urandom of=/dev/hda1
4.磁盘管理
(1)得到最恰当的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
(2)测试硬盘的读写速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
(3)修复硬盘
当硬盘较长时间放置不使用后,磁盘上会产生magenetic flux point。当磁头读到这些区 域的时候会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。这个命令是安全,高效的。
dd if=/dev/sda of=/dev/sda