dd
是一个在 Linux 和类 Unix 系统中广泛使用的命令行工具,主要用于数据复制、转换和格式化操作。这个命令的功能非常强大且灵活,可用于低级别的磁盘操作,如创建备份映像、克隆硬盘、写入ISO镜像到光盘或USB设备,以及进行文件内容的逐块复制等。
以下是 dd
命令的基本语法及常见选项:
dd [选项] if=输入文件名 of=输出文件名
- if (input file):指定输入文件,可以是一个普通文件、一个设备文件(如
/dev/sda1
)或者用-
表示标准输入。 - of (output file):指定输出文件,同样可以是普通文件或设备文件,或者用
-
表示标准输出。
其他常用选项包括:
- ibs (input block size):设置读取缓冲区大小,即每次从输入文件读取的数据量。
- obs (output block size):设置写入缓冲区大小,即每次向输出文件写入的数据量。
- bs (block size):同时设置读取和写入的块大小,如果单独设置了ibs和obs,则bs会被忽略。
- skip:跳过输入文件开头指定的块数。
- seek:在输出文件开始处跳过指定的块数。
- count:只处理指定数量的输入块。
- conv:进行数据转换,例如
conv=notrunc
不截断输出文件、conv=sync,noerror
在遇到错误时填充0继续等。
例如,以下命令用于将一个ISO镜像文件刻录到USB设备(假设设备名为 /dev/sdc
),并确保复制完成后同步输出缓冲区到磁盘:
sudo dd if=image.iso of=/dev/sdc bs=4M status=progress oflag=sync
在这个例子中:
sudo
用于获取管理员权限,因为通常对设备进行写操作需要更高权限。if=image.iso
指定输入文件为一个ISO镜像。of=/dev/sdc
表明输出目标是USB设备。bs=4M
设置块大小为4MB,以提高复制速度。status=progress
显示复制进度。oflag=sync
确保所有数据都同步到磁盘上。
请务必小心使用 dd
命令,特别是在涉及设备文件时,误操作可能会导致数据丢失或破坏系统分区结构。