zoukankan      html  css  js  c++  java
  • dd 命令详解

    作用:
    dd 是一个Unix和类Unix系统中的命令, 主要功能为转换和赋值文件。在Unix和类Unix系统上, 硬件的设备驱动(如硬盘) 和特殊设备文件(如/dev/zero, /dev/random) 就像普通文件一样, 出现在文件系统中, 只要在各自的驱动程序中实现了对应的功能, dd 也可以读取或者写入这些文件。 dd 也可以用在备份硬件的引导扇区, 获取一定数量的随机数据等等的一些任务。 dd 程序也可以再复制时处理数据。 例如转换字节序, 或在ASCII和EBXCDIC编码间转换。

    用法:

    dd 的命令行语句与其他的程序不同,因为它的命令选项格式为 选项=值, dd 默认从标准输入中读取,并写到标准输出中, 可以使用选择if (input file ) 和of (output file) 。

    块的概念:

    块是衡量一次读取,写入和转换字节的单位, 命令行选项可以为输入/读取(ibs) 和输出/写入(obs)指定一个不同的块大小, 选项会覆盖ibs 和obs 选项, 输入和输出的默认块大小为512字节(传统的磁盘块以及POSIX规定的块的大小) 复制的count选项。 读取的(skip)选项和 写入(seek)选项都是以块为单位的。 转换操作也瘦“转换块大小(cbs)”影响。
    w表示2倍,b表示512倍,k表示1024倍,M表示1024 × 1024倍,G表示1024 × 1024 × 1024倍

    用途:

    *数据转换:dd 可以在文件、设备、分区和卷之间复制数据。数据可以从其中任何地方输入和输出;但输出到分区时有重要差异。此外在传输过程中,数据可以用conv 选项以适应介质。 如何最后一个块有意外长度,试图使用cp 复制整个磁盘可能会遗漏掉,dd 却可能成功。源文件和目标磁盘应具有相同的大小。
    dd if =/dev/sr0 of=myCD.iso bs =2048 conv =noerror, sync // 从CD-ROM中创建ISO磁盘镜像
    dd if =/dev/sda2 of =/dev/sdb2 bs=4096 conv=noerror //克隆一个分区到另一个
    dd if =/dev/ad0 of =/dev/ad1 bs=1M conv noerror //克隆硬盘ad0到ad1 
    noerror 如果发生错误,程序继续进行,  sync  填充每个块到指定字节
    *备份和恢复主引导记录: 可以修复主引导记录。主引导记录可以转换到文件,或从总转移出来。
    dd if =/dev/fd0 of =MBRboot.img bs=512 count=2 //要复制软盘的前两个扇区:
    dd if =/dev/sda of =MBR.img bs =512 count =1 //创建整个x86主引导记录的镜像(包括MS-DOS分区表和MBR字节)
    dd if = /dev/sda of =MBR_boot.img bs=446 count =1 //创建仅含主引导记录代码的镜像
    *数据修改:dd可以直接修改数据
    dd if=/dev/zero of=path/to/file bs=512 count=1 conv=notrunc //空字节覆盖文件的前512 字节,notrunc 表示不缩减输出文件, 如果存在文件,只修改相应字节的数据,如果不存在,则创建512字节的文件。当dd的输出文件为块设备时,无效果。
    dd if=/dev/sdb2 of=partition.img bs=4096 counv=noerror //在不同的分区中复制磁盘分区到磁盘映像文件中。
    *磁盘擦除: 出于安全方面考虑,有时需要擦除丢弃的磁盘。
    dd if=dev/sda // 检查驱动器上是否有数据,并将其输出到标准输出
    dd if=/dev/zero of =/dev/sda bs=4k //用零擦除磁盘
    *驱动器性能基准测试: 对驱动器进行基准测试, 使用1024字节块分析连续系统读取和写入的性能:
    dd if =/dev/zero bs=1024 count=1000000 of=file_1GB
    dd if =file_1GB of=/dev/null bs=1024
    *用随机数据生成文件
    dd if=/dev/urandom of=myrandom bs=100 count=1 //使用内核随机数驱动,用100 个随机字节生成文件
    *将文件转换为大写
    dd if =filename of=filename1 conv=ucase
    *创建任意大小的空文件
    dd if=/dev/zero of=mytestfile.out bs=1 seek =1G  //创建1G的稀疏文件,或增加现有文件的大小。

    参数:

    if =输入文件(或设备名称)。

    of =输出文件(或设备名称)。

    ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

    skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

    obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。

    bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

    cbs = bytes 一次转换bytes字节。

    count = blocks 只拷贝输入的blocks块。

    conv = ASCII 把EBCDIC码转换为ASCII码。

    conv = ebcdic 把ASCII码转换为EBCDIC码。

    conv = ibm 把ASCII码转换为alternate EBCDIC码。

    conv = blick 把变动位转换成固定字符。

    conv = ublock 把固定们转换成变动位

    conv = ucase 把字母由小写变为大写。

    conv = lcase 把字母由大写变为小写。

    conv = notrunc 不截短输出文件。

    conv = swab 交换每一对输入字节。

    conv = noerror 出错时不停止处理。

    conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。

  • 相关阅读:
    CSS3中的3D效果
    JavaScript判断数据类型方法?
    JS函数中的arguments是什么?
    Vue组件之间通信的几种方式
    Vue插槽详解
    CSS文本溢出效果&滚动条样式设置
    Fibonacci数列计算的三种方法
    堆内存和栈内存详解[转]
    带头结点的单链表反转
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/4397987.html
Copyright © 2011-2022 走看看