dd命令详解及实战应用

dd简述

dd在linux中是 一个强大的命令,常用于拷贝大量数据,测试读写效能 ,清空硬盘数据(慎用),不仅如此,由于dd 允许以二进制方式读写,所以特别适合在原始设备上输入、输出。

dd与cp的区别

这里有必要说明一下,两个命令都可用于拷贝,但是级别却完全不一样:cp是文件级别的读取方式,而dd更底层,可以数据块级别去读取硬盘,由此可看出在效率上显然dd更胜一筹;其次在较大数据拷贝中,cp是复制文件(其本质是新建),过程中经由操作系统处理,最终存放在硬盘上的数据是随机分散的,并不连续,而dd的拷贝可以做到在硬盘上数据的存储是连续的,其它不再枚举,总之dd在较大数据量的备份场景,更加高效

dd常用参数

if=inputfile:指定源文件,即指定输入文件、缺省为标准输入,在LINUX中一切皆文件,因此可指定一些特殊的文件(如设备文件)用于特殊用途

of=outputfile:指定目标文件,即指定输出文件,缺省为标准输出

bs=N bytes:同时指定读入/输出的块大小为N个字节,N为数字

count=N blocks:指定拷贝的块数量,块大小由bs指定。N为数字

通常最常用的参数也就这四个,事实上dd支持的参数非常之多,在此不过多枚举(实际应用不是很多,需用到时在MAN下吧

命令格式及常见用法

1.备份整个盘(分区)的数据:dd if=/dev/sda of=/dev/sdb

2.备份整个盘(分区)数据到某个文件:dd if=/dev/sda of=/path/to/filename

*将文件内容还原到某硬盘:dd if=srcfile of=/dev/sda

3.备份整个盘(分区)并压缩后保存至指定路径:dd if=/dev/sda | gzip > /path/to/filename.gz

*将备份的压缩文件还原到硬盘{分区}:gzip -dc /path/to/filename.gz | dd of=/dev/sda

4.备份与还原MBR:dd if=/dev/sda of=/path/to/filename bs=512 count=1

*bs用于指定备份的块大小,单位为字节,这里表示将sda的第一个扇区(恰好512字节),也就是MBR存放的位置;count用于指定块的数量

*还原:dd if=/path/to/filename of=/dev/sdb

5.拷贝内存内容到硬盘:dd if=/dev/mem of=/path/to/filename.mem bs=1024

6.拷贝光盘内容到硬盘:dd if=/dev/cdrom of=/path/to/filename.iso

7.增加swap分区文件大小

①创建一个相应大小的文件(空白文件,这里可以使用/dev/zero填充)

dd if=/dev/zero of=/swapfile bs=1024 count=100000;(根据需要自行调整大小,此处为100M)

②将此前创建的文件识别为swap文件

mkswap /swapfile

③启用创建好的SWAP文件

swapon /swapfile

④挂载SWAP,mount挂载重启后会失效,这里设定为自定挂载,打开/etc/fstab文件新增一行

/swapfile swap  swap default 0 0至此,完成swap大小的调整

8.销毁硬盘数据(慎用)

dd if=/dev/urandom of=/dev/sdb ( 这里利用随机数填充硬盘,某些特殊场合可以用来销毁数据)

9.测试硬盘读写速度

①dd if=/dev/zero bs=1024 count=1000000  of=/path/to/test.1GB 测试写入速度,通过命令执行时间计算

②dd if=/path/to/test.1GB bs=64K | dd of=/dev/null 测试读取速度,通过命令执行时间计算

10.测试硬盘效能最佳块大小

 dd if=/dev/zero bs=1024 count=1000000 of=/path/to/test.1GB

 dd if=/dev/zero bs=2048 count=500000 of=/path/to/test.1GB
 dd if=/dev/zero bs=4096 count=250000 of=/path/to/test.1GB
 dd if=/dev/zero bs=8192 count=125000 of=/path/to/test.1GB

*通过各命令执行的时间可大概测试最佳块大小

11.某种程度上修复硬盘

dd if=/dev/sda of=/dev/sda

总结:dd命令很好很强大



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

(0)
sevenyellowsevenyellow
上一篇 2017-04-04
下一篇 2017-04-04

相关推荐

  • VIM 详用!

    1、复制/etc/rc.d/rc.sysinit文件至/TMP目录,将/tmp/rc.sysinit文件的至少一个空白字符开头的行首加 :%s/^[[:space:]]/#/ 2、复制/boot/grub/grub.conf 至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s/[[:space:]]\+// 3、删除/tmp/…

    Linux干货 2017-08-20
  • shell脚本语言中的选择执行

    shell脚本语言中的选择执行 概述 程序执行过程分为顺序执行、选择执行和循环执行。顺序执行是指程序按照步骤一步一步地运行。选择执行是指程序根据特定条件选择两项或者多项中的一项运行。循环执行是指程序根据特定条件重复执行直到某个节点结束,继续运行其他步骤。本篇文章从判断条件和条件判断式简要说明shell脚本语言中程序选择执行的用法。 shell脚本中的判断条件…

    Linux干货 2017-04-17
  • linux 文件权限以及用户策略 讲解

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

    Linux干货 2016-08-05
  • shell四剑客之sed

    概述 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把 当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容 ,处理完成后,把缓冲区的内容送往屏幕。接着处理下一 行,这样不断重复,直到文件末尾。文件内容并没有改变 ,除非你使用重定向存储输出。Sed主要…

    Linux干货 2016-08-15
  • centos7配置bindDNS解析服务

    首先来概述一下 通俗一点理解呢,DNS就是把域名转换成IP的一种服务(反向则是IP转换成域名).以方便人们的记忆,就好比记住一个代表性的英文要比记住电话号码快得多,通常我们将这种服务称之为解析.现在一般公网都有万网 腾讯云这些机构,DNS这一块我们不需要负责.但是在现在企业的内部网则就需要我们来搭建DNS服务器了.本次采用的bind工具进行域名的解析。 1.…

    Linux干货 2018-03-26
  • Shell脚本编程入门

    认识Shell Shell原意为贝壳 Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 可以使用命令查看当前使用的是哪种shell以及当前Linux系统中都支持哪些shell种类。   查看当前…

    Linux干货 2016-08-12

评论列表(1条)

  • renjin
    renjin 2017-04-05 14:30

    对dd命令的用法写的很详细,可以适当的插入几张图片,注意一下排版。这样会好很多