概述
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`