dd命令详解

dd命令: convert and copy a file
用法:
  dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
   bs=#: block size, 复制单元大小
   count=#:复制多少个bs
   of=file 写到所命名的文件而不是到标准输出
   if=file 从所命名文件读取而不是从标准输入
   bs=size 指定块大小(既是ibs也是obs)
   ibs=size 一次读size个byte
   obs=size 一次写size个byte
   cbs=size 一次转化size个byte
   skip=blocks 从开头忽略blocks个ibs大小的块
   seek=blocks 从开头忽略blocks个obs大小的块
   count=n 只拷贝n个记录
用指定的参数转换文件
   conv=conversion[,conversion…]
   转换参数:
    ascii 转换 EBCDIC 为 ASCII
    ebcdic 转换 ASCII 为 EBCDIC
    block 转换一行数据为长度为 cbs 的记录,不足部分用空格填充。
    unblock 替代cbs长度的每一行尾的空格为新行
    lcase 把大写字符转换为小写字符
    ucase 把小写字符转换为大写字符
    nocreat 不创建输出文件
    noerror 出错时不停止
    notrunc 不截断输出文件
    sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐  
备份:
  dd if=/dev/sdx of=/dev/sdy
   将本地的/dev/sdx整盘备份到/dev/sdy
  dd if=/dev/sdx of=/path/to/image
   将/dev/sdx全盘数据备份到指定路径的image文件
  dd if=/dev/sdx | gzip >/path/to/image.gz
   备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径
恢复:
  dd if=/path/to/image of=/dev/sdx
   将备份文件恢复到指定盘
  gzip -dc /path/to/image.gz | dd of=/dev/sdx
   将压缩的备份文件恢复到指定盘
拷贝内存资料到硬盘
  dd if=/dev/mem of=/root/mem.bin bs=1024
   将内存里的数据拷贝到root目录下的mem.bin文件
从光盘拷贝iso镜像
  dd if=/dev/cdrom of=/root/cd.iso
   拷贝光盘数据到root文件夹下,并保存为cd.iso文件
销毁磁盘数据
  dd if=/dev/urandom of=/dev/sda1
   利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/ sda1将无法挂载,创建和拷贝操作无法执行。
得到最恰当的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指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小
测试硬盘读写速度
  dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
  dd if=/root/1Gb.file bs=64k | dd of=/dev/null
  通过上两个命令输出的执行时间,可以计算出测试硬盘的写/读/速度
修复硬盘
  dd if=/dev/sda of=/dev/sda
   当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的。
示例:
  1.备份MBR:
       [root@anonymous ~]#dd if=/dev/sda1 of=/tmp/mbr.bak bs=512
        count=11+0 records in
       1+0 records out
       512 bytes (512 B) copied, 0.000160395 s, 3.2 MB/s

  2.有一个大于2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?
       [root@anonymous ~]#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
       128+0 records in
       128+0 records out
       128 bytes (128 B) copied, 0.000421017 s, 304 kB/s

  3.创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

       [root@anonymous ~]#dd if=/dev/zero of=test bs=1M count=2048
       2048+0 records in
       2048+0 records out
       2147483648 bytes (2.1 GB) copied, 121.521 s, 17.7 MB/s
       [root@anonymous ~]#mkfs.ext4 -b 2048 -L ‘TEST’ -m 1 test
       mke2fs 1.41.12 (17-May-2010)
       test is not a block special device.
       Proceed anyway? (y,n) y
       Filesystem label=TEST
       OS type: Linux
       Block size=2048 (log=1)
       Fragment size=2048 (log=1)
       Stride=0 blocks, Stripe width=0 blocks
       131072 inodes, 1048576 blocks
       10485 blocks (1.00%) reserved for the super user
       First data block=0
       Maximum filesystem blocks=537919488
       64 block groups
       16384 blocks per group, 16384 fragments per group
       2048 inodes per group
       Superblock backups stored on blocks:
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

       Writing inode tables: done                           
       Creating journal (32768 blocks): done
       Writing superblocks and filesystem accounting information: done
       This filesystem will be automatically checked every 35 mounts or
       180 days, whichever comes first.  Use tune2fs -c or -i to override.
       [root@anonymous ~]#tune2fs -o acl test
       tune2fs 1.41.12 (17-May-2010)
       [root@anonymous ~]#echo ‘/root/test /mnt/test  ext4  defaults,loop  0 0’ >> /etc/fstab
       [root@anonymous ~]#mount -a 

原创文章,作者:mrlapuga,如若转载,请注明出处:http://www.178linux.com/71342

(2)
mrlapugamrlapuga
上一篇 2017-03-19
下一篇 2017-03-19

相关推荐

  • linux的发展形成杂谈

    纵观linux的发展,可以看得出Linux是那个时代的产物,是操作系统群雄并起时候的真名天子。从1945年第一台计算机发明开始,人民就开始产生了对操作的系统的需求,首先是单个命令的输入,然后是单批次工作的产生,之后就是多批次流程的产生,然后就是多任务多批次流程,人民一直一直不懈的努力研发一个真正意义上的操作系统。 终于,在70年代,大神级的人物KenThom…

    Linux干货 2016-10-31
  • grep的使用和正则表达式

           grep作为Linux中的文本编辑的三剑客之一,它的功能很强大,并不是虚传,学会了grep在文本中找我们要找的的字符串总是能很轻易地找到,grep不仅仅就这一点功能,它在我们工作上也会对我们有很大的帮助。下面我来介绍一下grep的简单的功能。 grep :文本过滤( 模式:patter…

    Linux干货 2016-08-10
  • Linux哲学思想以及自己的理解

    Linux哲学思想: #1 一切接文件 #2  单一目的小程序 #3 组合小程序完成复杂任务 #4 文本文件保存配置信息 #5 尽量避免捕获用户接口 #6 提供机制,而非策略 自己的理解:(玩Linux时间比较短,没什么太深刻的理解) #1 一切皆文件 我们说“Linux中一切皆文件”直观地可以这样理解:所有的东西,设备、内存都模拟成文件,我们可以…

    Linux干货 2016-08-15
  • 用户管理基本操作

    1.创建组distro,其GID为2016[root@localhost ~]# groupadd -g 2016 distro2.创建用户mandriva,其ID号为1005;基本组为distro[root@localhost ~]# useradd -u 1005 mandriva -g 20163.创建用户mageia,其ID号为1…

    Linux干货 2017-09-04
  • 第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。    集线器(HUB)主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。集线器是一种共享设备,HUB本身不能识别目的地址,当同一局域网内的A主机给B主机传输数据时,数据包在以HUB为架构…

    Linux干货 2017-02-27
  • 文件查找工具之——find

        前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具 一、首先我们先要了解文本搜索和文件查找的区别     文本…

    Linux干货 2015-07-06