dd命令

用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

参数

  • if=FILE 指定输入源文件, 缺省为标准输入, < if=input file >
  • iflag=FLAGS 指定输入IO方式(是否跳过系统的读写缓冲等), 逗号分隔
  • of=FILE 指定输出目的文件, 缺省为标准输出, < of=output file >
  • oflag=FLAGS 指定输出IO方式(是否跳过系统的读写缓冲等), 逗号分隔
  • ibs=BYTES 一次读入bytes个字节
  • obs=BYTES 一次输出bytes个字节
  • bs=BYTES 同时设置ibs和obs的块大小为bytes个字节
  • cbs=BYTES 一次转换bytes个字节, 即指定转换缓冲区大小
  • seek=N 跳过输出开头的 N 个obs大小的块
  • skip=N 跳过输入开头的 N 个ibs大小的块
  • count=N 仅拷贝N个输入的块
  • conv=CONVS 指定转换方式, 用逗号分隔
  • status=LEVEL 信息输出的级别

参数 LEVEL

  • 'none' 除了错误信息以外, 什么都不显示
  • 'noxfer' 不显示最后的传输结果统计
  • 'progress' 间隔显示传输统计

参数CONV

  • ascii from EBCDIC to ASCII
  • ebcdic from ASCII to EBCDIC
  • ibm from ASCII to alternate EBCDIC
  • block pad newline-terminated records with spaces to cbs-size
  • unblock replace trailing spaces in cbs-size records with newline
  • lcase change upper case to lower case
  • ucase change lower case to upper case
  • sparse try to seek rather than write the output for NUL input blocks
  • swab swap every pair of input bytes
  • sync pad every input block with NULs to ibs-size; when used with block or unblock, pad with spaces rather than NULs
  • excl fail if the output file already exists
  • nocreat do not create the output file
  • notrunc do not truncate the output file
  • noerror continue after read errors
  • fdatasync physically write output file data before finishing
  • fsync likewise, but also write metadata

参数 FLAG

  • append append mode (makes sense only for output; conv=notrunc suggested)
  • direct use direct I/O for data
  • directory fail unless a directory
  • dsync use synchronized I/O for data
  • sync likewise, but also for metadata
  • fullblock accumulate full blocks of input (iflag only)
  • nonblock use non-blocking I/O
  • noatime do not update access time
  • nocache Request to drop cache. See also oflag=sync
  • noctty do not assign controlling terminal from file
  • nofollow do not follow symlinks
  • count_bytes treat 'count=N' as a byte count (iflag only)
  • skip_bytes treat 'skip=N' as a byte count (iflag only)
  • seek_bytes treat 'seek=N' as a byte count (oflag only)

/dev/null
空设备, 也称为位桶(bit bucket), 任何写入它的输出都会被抛弃, 如果不想让消息以标准输出显示或写入文件, 可以将消息重定向到位桶.

/dev/zero
0设备, 无穷尽地提供0, 可以使用任何你需要的数目——设备提供的要多的多, 可以用于向设备或文件写入字符串0.

dd命令实例

# 将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd # 将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image # 将文件sfile拷贝到文件dfile
$ dd if=sfile of=dfile # 假设串口节点为/dev/ttyS0, 下面的命令将文件写入串口
dd if=1.txt of=/dev/ttyS0 # 创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1 # 将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb # 备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz # 将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb # 备份磁盘开始的512个字节大小的MBR信息到指定文件,count=1指仅拷贝一个块;bs=512指块大小为512个字节。
dd if=/dev/hda of=/root/image count=1 bs=512
# 恢复, 将备份的MBR信息写到磁盘开始部分
dd if=/root/image of=/dev/had # 备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M) # 拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k) # 拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso # 销毁磁盘数据,利用随机的数据填充硬盘
dd if=/dev/urandom of=/dev/hda1 # 测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null # 确定硬盘的最佳块大小, 通过比较以下命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
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 # 修复硬盘. 当硬盘较长时间(一年以上)放置不使用后, 磁盘上会产生magnetic flux point, 当磁头读到这些区域时会遇到困难, 并可能导致I/O错误. 当这种情况影响到硬盘的第一个扇区时, 可能导致硬盘报废. 此命令有可能使这些数据起死回生, 并且这个过程是安全、高效的.
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda # 利用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 # 利用dd可以实现截屏,假设屏幕对应的设备节点/dev/fb0,屏幕大小是600×800,屏幕像素的格式是rgb565(每个像素对应两个字节),则命令如下
dd if=/dev/fb0 of=/tmp/1.dat bs=600 count=1600 # 利用dd直接写屏幕,例如下面的命令将随机渲染屏幕
dd if=/dev/urandom of=/dev/fb0 bs=600 count=1600

  

dd命令笔记的更多相关文章

  1. 《linux就该这么学》第三节课 第二节命令笔记

    命令笔记 (随笔原创,借鉴请修改) linux系统中一切都是文件 2.4  系统状态的命令:  ifconfig   :    查看系统网卡信息,包括网卡名称,ip地址,掩码,mac地址,收到数据包大 ...

  2. 使用dd命令备份Linux分区

    为了备份分区,开始使用的是Remastersys,但最终生成的iso文件仅有几十K,应该是软件bug,且此软件不再更新,后尝试使用Linux Respin,但github一直连接不上. 其实可以尝试使 ...

  3. linux dd命令详解

    Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 名称: dd 使用权限: 所有使用者dd 这个指令在 ...

  4. 使用dd命令克隆整个系统(转)

    神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具!          既然如此,我为什么要使用g4l这样复杂的工具呢?一条dd命令不就可以帮我实现任意 ...

  5. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  6. linux下显示dd命令的进度:

    linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000 想要查看上面的dd命令的执行进度,可以使用下面几种方法: 比 ...

  7. 【转载】shell中 dd 命令

    转载自:http://blog.chinaunix.net/uid-24958038-id-3416169.html dd if=/dev/zero of=的含义是什么? 一.dd命令的解释 dd:用 ...

  8. 6个关于dd命令备份Linux系统的例子

    数据丢失带来的损失是相当昂贵的.关键数据的丢失会对各种规模的企业带来影响.有几种方法来备份Linux系统,包括rsync的和rsnapshot等.本文提供有关使用dd命令备份Linux系统的6个实例. ...

  9. linux dd命令实用详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

随机推荐

  1. Golang: 读写之外的其他文件操作

    在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作. 一.创建目录: package main import ( "fmt" &quo ...

  2. Palisection(Codeforces Beta Round #17E+回文树)

    题目链接 传送门 题意 给你一个串串,问你有多少对回文串相交. 思路 由于正着做不太好算答案,那么我们考虑用总的回文对数减去不相交的回文对数. 而不相交的回文对数可以通过计算以\(i\)为右端点的回文 ...

  3. html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据

    1.DSO也叫做数据源对象,IE 4.0引入了DSO,在IE 5.0对DSO技术进行很大的扩展.以往如果数据是通过SQL语言对数据库进行查询得到的结果,那么就把它们存放在ADO(ActiveX Dat ...

  4. python基础语法5 函数定义,可变长参数

    函数 1.什么是函数 函数就是一种工具. 可以重复调用 2.为什么要用函数 1.防止代码冗(rong)余 2.代码的可读性差 3.怎么用函数 1.定义函数-->制造工具 2.调用函数--> ...

  5. PHP 验证Email的函数

    <?php   function validateEmail($email) {    $isValid = true;    $atIndex = strrpos($email, " ...

  6. Ruby Raise rescue

    ruby1.9以上,retry只能支持在rescue里面使用,不支持在block里面用:你要去用ruby1.8 rescue使用代码例子 # -*- coding: UTF-8 -*- n = 0 b ...

  7. Hbase扩展

    1 HBase在商业项目中的能力 每天: 1) 消息量:发送和接收的消息数超过60亿 2) 将近1000亿条数据的读写 3) 高峰期每秒150万左右操作 4) 整体读取数据占有约55%,写入占有45% ...

  8. c#接口interface学习

    好久没学习C#了,上次已经学习到了接口这块,感觉有点不太好理解,因此重新学习,在vs上面运行了,本来不想写博客的,但是正好看到网上有人说,写博客可以加深印象,因此,写吧. 下面是菜鸟教程的实例 usi ...

  9. Anaconda与Python安装版本对应关系 --- 转载

    转载自:https://blog.csdn.net/yuejisuo1948/article/details/81043823 首先解释一下上表. anaconda在每次发布新版本的时候都会给pyth ...

  10. 洛谷 P1097 【统计数字】 题解

    题目背景 警告:数据可能存在加强 题目描述 某次科研调查时得到了nn个自然数,每个数均不超过1500000000(^)( ).已知不相同的数不超过1000010000个,现在需要统计这些自然数各自出现 ...