dd简介
dd是一个比较古老的命令,早在Unix诞生之时就来到人间,成为每一个Hacker的必备工具。它是干什么的?对此,man大叔有话说。dd是一个拷贝文件的命令,同时它会根据特定选项对文件进行转换和格式化。主要的选项有:
- ibs=BYTES,一次从输入文件中拷贝的字节数(BLOCKS)
- if=FILE ,指定输入文件,缺省为stdin
- obs=BYTES, 一次从输出文件中拷贝的字节数
- of=FILE,指定输出文件,不会截断文件,缺省为stdout
- bs=BYTES,同时指定ibs=BYTES, obs=BYTES
- cbs=BYTES ,每次转换的字节数
- conv=KEYWORDS[,KEYWORDS],根据KEYWORDS指定的规则(多个规则以逗号,分隔)对文件进行转换
- count=BLOCKS,指定从输入文件中要拷贝的BLOCKS数
- seek=BLOCKS,从输出文件开头处跳过指定的BLOCKS数
- skip=BLOCKS ,从输出文件开头处跳过指定的BLOCKS数
指定BYTES时默认为BYTES个字节,如512为512字节。数字后面可以加单位修饰,如512b同512, 512w等于512*2, 512K等于512*1024, 512M等于512*1024*1024。
可供选择的KEYWORDS有:
- ascii ,将EBCDIC编码转换为ASCII编码
- ebcdic,将ASCII编码转换为EBCDIC编码
- block,将n结束变长记录转换到cbs指定的长度,不足部分以空格填充
- unblock,将每个cbs尾部填充的空格剔除
- lcase,将字母转换为小写
- ucase,将字母转换为大写
- swab,交换每对相邻的字符的位置,例如’echo abcd|dd conv=swab’输出badc
- noerror,忽略读文件产生的错误
- sync,将每一个输入块用0填充至ibs指定的大小
dd用例
文件/设备备份
dd if=/dev/hda of=/path/to/image |
将整个磁盘hda镜像到image文件。
dd if=/dev/hda | gzip >/path/to/image.gz |
备份/dev/hda全盘数据,并利用gzip工具进行压缩,保存到指定路径
gzip -dc /path/to/image.gz | dd of=/dev/hda |
将压缩的备份文件恢复到指定盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k |
将软驱数据备份到当前目录的disk.img文件
dd if=/dev/hda of=/path/to/mbr count=1 bs=512 |
备份磁盘开始的512Byte大小的MBR信息到指定文件
dd if=/path/to/mbr of=/dev/hda |
将备份的MBR信息写到磁盘开始部分
dd if=/dev/mem of=/root/mem.bin bs=1024 |
将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/cdrom of=cd.iso |
拷贝光盘数据,保存为cd.iso文件
改变交换分区的大小
dd if=/dev/zero of=/swapfile bs=4096 count=512K |
创建一个足够大的文件(此处为2G)
mkswap /swapfile |
格式化这个文件为swap文件
swapon /swapfile |
启用这个swap文件
/swapfile swap swap defaults 0 0 |
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行
测试硬盘的速度
dd if=/dev/zero of=largefile bs=1M count=1K |
产生一个大小为1G的文件
dd if=largefile of=/dev/null bs=1M count=1K |
复制该文件到空设备/dev/null
通过这两个命令可测试出磁盘的读写速度
快速生成一定大小的文件
dd if=/dev/zero of=largefile bs=1M count=1K |
产生大小为1G的文件,由0填充
dd if=/dev/urandom of=largefile bs=1M count=1K |
产生大小为1G的文件,由随机数填充
Unix/Linux的一些特殊设备文件
一切皆文件。
- /dev/mem,直接存取物理内存
- /dev/null,空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
- /dev/zero,零字节源,只能读取到无限多的零字节。
- /dev/full,满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
- /dev/random,随机数发生器。完全由用户的输入来产生随机数。 如果用户停止所有动作,则停止产生新的随机数。
- /dev/urandom,更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
转载请注明:爱开源 » Linux 命令 dd