📜  Linux中的“dd”命令

📅  最后修改于: 2022-05-13 01:57:04.787000             🧑  作者: Mango

Linux中的“dd”命令

dd是用于 Unix 和类 Unix 操作系统的命令行实用程序,其主要目的是转换和复制文件。

  • 在 Unix 上,硬件设备驱动程序(如硬盘驱动器)和特殊设备文件(如 /dev/zero 和 /dev/random)与普通文件一样出现在文件系统中。
  • dd 也可以读取和/或写入这些文件,前提是该函数在其各自的驱动程序中实现
  • 因此,dd 可用于备份硬盘驱动器的引导扇区和获取固定数量的随机数据等任务。
  • dd 程序还可以在复制数据时对其进行转换,包括字节顺序交换以及与 ASCII 和 EBCDIC 文本编码之间的转换。

用法: dd 的命令行语法与许多其他 Unix 程序不同,因为它使用语法option=value作为其命令行选项,而不是更标准的-option value–option=value格式。默认情况下,dd 从 stdin 读取并写入 stdout,但可以使用 if(输入文件)和 of(输出文件)选项更改这些设置。

dd 命令的一些实际示例:

  1. 备份整个硬盘:要将硬盘的整个副本备份到连接到同一系统的另一个硬盘,请执行 dd 命令,如图所示。在本dd命令示例中,源硬盘的UNIX设备名称为/dev/hda,目标硬盘的设备名称为/dev/hdb。
    # dd if = /dev/sda of = /dev/sdb
    
    • “if”代表输入文件, “of”代表输出文件。因此/dev/sda的确切副本将在/dev/sdb中可用。
    • 如果有任何错误,上述命令将失败。如果你给参数“conv=noerror” ,那么如果有读取错误,它将继续复制。
    • 输入文件和输出文件应该非常小心地提及。以防万一,您在目标中提及源设备,反之亦然,您可能会丢失所有数据。
    • 要使用下面给出的 dd 命令将硬盘复制到硬盘,sync 选项允许您使用同步 I/O 复制所有内容。
      # dd if = /dev/sda of = /dev/sdb conv=noerror, sync
      
  2. 备份分区:您可以在输入文件中使用分区的设备名称,并在输出中指定目标路径或映像文件,如 dd 命令所示。
    # dd if=/dev/hda1 of=~/partition.img
    
  3. 创建硬盘映像:您可以创建硬盘映像文件并将其保存在其他存储设备中,而不是备份硬盘。将数据备份到磁盘映像有许多优点,其中之一是易于使用。此方法通常比其他类型的备份更快,使您能够在发生意外灾难后快速恢复数据。它创建硬盘 /dev/hda 的映像。
    # dd if = /dev/hda of = ~/hdadisk.img
    
  4. 使用硬盘映像恢复:使用另一个硬盘的映像文件恢复一个硬盘,可以使用以下 dd 命令
    # dd if = hdadisk.img of = /dev/hdb
    

    镜像文件hdisk.img文件,是/dev/hda的镜像,所以上面的命令会将/dev/hda的镜像恢复到/dev/hdb。

  5. 创建 CDROM 备份: dd 命令允许您从源文件创建 iso 文件。所以我们可以插入光盘并输入dd命令来创建光盘内容的iso文件。
    # dd if = /dev/cdrom of = tgsservice.iso bs = 2048
    

    dd 命令读取一个输入块并对其进行处理并将其写入输出文件。您可以指定输入和输出文件的块大小。在上面的 dd 命令示例中,参数“bs”指定输入和输出文件的块大小。所以 dd 在上述命令中使用2048bytes作为块大小。

参考 :

  • Unix 中的 dd 命令。
  • dd 手册页。