dd
是 Linux 中一个强大的磁盘和文件操作工具,常用于数据复制、转换和备份。它以块为单位处理数据,适合低级别操作。以下是 dd
的详细使用指南:
dd if=<输入文件> of=<输出文件> [选项]
备份整个磁盘到镜像文件:
dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
if=/dev/sdX
:源磁盘(如 /dev/sda
)。bs=4M
:设置块大小为 4MB(提高速度)。status=progress
:显示进度(仅限较新版本)。恢复镜像到磁盘:
dd if=/path/to/backup.img of=/dev/sdX bs=4M status=progress
dd if=/dev/sdX of=/dev/sdY bs=4M status=progress
/dev/sdX
完整克隆到 /dev/sdY
(目标磁盘需相同或更大容量)。dd if=/dev/zero of=/path/to/file bs=1M count=100
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
oflag=direct
绕过缓存,结果更真实)。dd if=/dev/zero of=/dev/sdX bs=4M status=progress
dd if=input.txt of=output.txt conv=ucase
conv=ucase
)。dd if=/dev/sdX of=output.img skip=1000 bs=1M count=500
选项 | 作用 |
---|---|
bs=BYTES |
设置读写块大小(如 4M )。 |
count=N |
复制 N 个块后停止。 |
skip=N |
跳过输入文件的前 N 个块。 |
seek=N |
跳过输出文件的前 N 个块。 |
conv=FLAGS |
转换选项(如 notrunc 不截断输出文件)。 |
oflag=FLAGS |
输出模式(如 direct 直接 I/O)。 |
dd
直接操作块设备,错误的 of=
参数可能导致数据丢失(如误选系统盘)。cmp
或 sha256sum
校验:
bash
sha256sum /dev/sdX backup.img
rsync
, cat
, pv
。shred
或 scrub
。bash
dd if=/dev/sdX | gzip > backup.img.gz
bash
gunzip -c backup.img.gz | dd of=/dev/sdX
通过合理使用 dd
,你可以高效完成磁盘操作任务,但务必确认命令参数后再执行!