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

相关推荐

  • bash 基础特性1

    bash 基础特性 命令模式 systemctl set-default multi-user.target 图形模式 systemctl set-default graphical.target   # rmdir [OPTION]…DIRECTORY…-p:删除某录后,如果其父目录为空,则一并删除之-v:显示过程# mk…

    Linux干货 2017-06-01
  • CentOS7口令破解

    一.rd.break方式修改  1.启动时任意键暂停启动      2.按e 键进入编辑模式 将光标移动linux16 开始的行,添加内核参数rd.break 按ctrl-x 启动 3.重新挂载可读可写根目录 :mount –o remount,rw /sysroot 切回根目录: chroot /sysroot 修改…

    Linux干货 2016-11-29
  • Linux之iptables原理详解

    目录: 一、netfilter与iptables 二、filter、nat、mangle等规则表 三、INPUT、FORWARD等规则链和规则 四、Linux数据包路由原理 五、iptables编写规则  一、netfilter与iptables (1)Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既…

    2017-08-04
  • linux 文件权限以及用户策略 讲解

     linux 文件权限以及用户策略 讲解    由于linux系统是一个多用户使用的系统,对于各个用户指定的文件或目录必须存在一套管理系统,以防止多用户对相同文件的混淆使用。于是催生出了linux系统文件的用户权限设置。其存在的意义就是每一个文件或目录对于不同的用户区分读取,写入,执行三种权限,即:r,w,x。下面将详…

    Linux干货 2016-08-05
  • Nginx配置详解

    NginX 回顾http协议: 1.URL格式 URL:shceme://username:password@host:port/path;params?query#fram 2.http事务:     request:请求报文格式       reponse:响应报文…

    Linux干货 2016-10-25
  • N22-第三周作业

    列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# w |cut -d ' ' -f1 |sort -u lucy root USER 2.取出最后登录到当前系统的用户的相关信息。 [root@localhost ~]# last -1 root   &nbs…

    Linux干货 2016-08-28