> 软件包与系统管理 > dd

dd: 文件转换和复制

dd 命令是一个强大的实用程序,用于转换和复制文件。它主要用于低级数据操作,如创建磁盘映像、备份和恢复分区、创建可启动 USB 驱动器以及擦除文件内容。使用不当可能导致数据丢失,因此必须非常小心。

概述

dd 通常被认为是“disk dump”或“data duplicator”的缩写,它通过块单位读写数据来工作。它从输入文件 (if) 读取数据并将其复制到输出文件 (of),在此过程中可以应用各种转换 (conv) 和块大小 (bs) 选项。

主要功能

  • 创建和恢复磁盘/分区映像
  • 创建可启动媒体
  • 调整文件大小和初始化内容
  • 数据转换(例如:大小写转换)

主要选项

dd 命令通过各种选项实现精细的数据操作。指定输入 (if) 和输出 (of) 文件尤其重要,并且可以通过块大小 (bs) 和要复制的块数 (count) 来控制操作范围。

输入/输出指定

块大小和数量

转换和状态

生成的命令:

请尝试组合命令。

描述:

`dd` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

dd 命令功能强大,但使用不当可能导致严重的数据丢失。以下示例展示了常见用法,但在实际系统磁盘上应用时,请务必先进行备份并谨慎操作。

创建 100MB 的虚拟文件

dd if=/dev/zero of=dummy.img bs=1M count=100

从 /dev/zero 读取 100 个 1MB 的块,创建名为 'dummy.img' 的文件。

备份磁盘分区(需谨慎)

dd if=/dev/sda1 of=sda1_backup.img bs=4M status=progress

将 /dev/sda1 分区的全部内容备份到 'sda1_backup.img' 文件。使用 'status=progress' 显示进度。**请非常仔细地检查目标设备路径。**

用 0 填充文件内容(安全擦除)

dd if=/dev/zero of=myfile.txt bs=1M count=1 conv=notrunc

用 0 覆盖现有 'myfile.txt' 文件内容。'conv=notrunc' 会保持文件大小。

从 ISO 镜像创建可启动 USB 驱动器(非常谨慎)

dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync

将 'ubuntu.iso' 文件复制到 '/dev/sdb' USB 驱动器以使其可启动。**请务必确认 'of' 指定的设备路径。指定错误将损坏系统磁盘。** 'conv=fsync' 会确保所有数据完全写入磁盘。

复制文件的特定部分

dd if=input.txt of=output.txt bs=1 count=100 skip=50 seek=0

从 'input.txt' 文件读取从第 51 个字节开始的 100 个字节,并将其复制到 'output.txt' 文件的开头。(由于 bs=1,skip/seek 是字节单位)

提示与注意事项

dd 命令非常强大,使用时需要格外小心。特别是,为 `if` 和 `of` 选项指定错误的设备或文件可能会损坏系统数据。

关键注意事项

  • **确认目标**:仔细检查 `if` 和 `of` 中指定的路径。特别是像 `/dev/sda` 这样的设备文件可能具有毁灭性。
  • **进度显示**:使用 `status=progress` 选项实时查看操作进度。这对于大容量操作很有用。
  • **块大小**:`bs` 选项对性能有很大影响。通常,1M、4M、8M 等效率较高。
  • **数据丢失风险**:`dd` 会在不发出警告的情况下覆盖数据,因此在对包含重要数据的磁盘或分区使用时,请务必先进行备份。

与 pv 命令一起使用

dd 命令本身提供的进度显示有限。与 `pv` (Pipe Viewer) 命令一起使用可以提供更详细的进度、传输速率和预计完成时间。如果未安装 `pv`,则需要先安装它。(例如:`sudo apt install pv` 或 `sudo yum install pv`) **使用示例:** `dd if=/dev/sda | pv -pteb | dd of=/dev/sdb`


相同类别命令