最新消息:

Linux 命令 dd

命令 admin 2722浏览 0评论

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

您必须 登录 才能发表评论!