dd [参数] if=输入文件 of=输出文件 [选项]
| 参数 | 功能说明 |
|---|---|
if=FILE | /dev/sda)或普通文件 |
of=FILE | |
bs=BYTES | bs=4M),影响I/O效率 |
count=N | ibs或 bs决定 |
skip=BLOCKS | |
seek=BLOCKS | |
conv=CONVS | noerror(忽略错误)、 sync(填充对齐)、 notrunc(不截断输出文件) |
三、典型应用场景
1. 磁盘与分区操作
整盘备份与恢复
# 备份磁盘到镜像文件dd if=/dev/sda of=/backup/sda.img bs=4M status=progress# 恢复镜像到磁盘dd if=/backup/sda.img of=/dev/sda bs=4M
注意:目标磁盘容量需≥源磁盘,避免数据截断。
备份MBR(主引导记录)
# 备份前512字节dd if=/dev/sda of=mbr.bak bs=512 count=1# 恢复MBRdd if=mbr.bak of=/dev/sda bs=512 count=1
用于修复引导问题或恶意软件清除。
2. 文件与设备操作
创建空文件或填充数据
# 创建1GB空文件(快速)dd if=/dev/zero of=1g.file bs=1M count=1024# 用随机数据覆盖磁盘(安全擦除)dd if=/dev/urandom of=/dev/sdb1 bs=1M status=progress
/dev/zero提供空字符流,/dev/urandom生成随机数据。
制作启动盘
# 将ISO写入U盘(设备名需确认)dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress && sync
适用于Linux/Mac系统,需谨慎选择输出设备。
3. 性能测试与优化
测试磁盘读写速度
# 写入测试dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct# 读取测试dd if=testfile of=/dev/null bs=1G iflag=direct
oflag=direct和iflag=direct绕过缓存,反映真实性能。
优化块大小
通过不同bs值测试耗时,选择最佳块大小(如bs=4M或bs=8M)。
四、高级技巧
1. 跨网络备份
使用netcat实现远程克隆:
# 发送端dd if=/dev/sda bs=4M | netcat 192.168.1.100 1234# 接收端netcat -l -p 1234 | dd of=/dev/sdb bs=4M
适合无物理接触的设备间传输。
2. 转换文件格式
文本大小写转换
dd if=input.txt of=output.txt conv=ucase # 转大写dd if=input.txt of=output.txt conv=lcase # 转小写
支持ASCII与EBCDIC编码互转。
3. 稀疏文件处理
创建占用空间小但显示容量大的文件:
dd if=/dev/zero of=sparse.img bs=1 count=0 seek=1T
适用于虚拟磁盘或测试场景。
五、注意事项
数据安全风险
错误使用of=可能覆盖重要设备,操作前务必确认设备名(如lsblk)。
建议先通过虚拟机或非生产环境测试命令。
性能与兼容性
大文件操作时优先使用bs=4M以上块大小提升效率。
部分参数(如oflag=direct)需内核或文件系统支持。
日志与监控
添加status=progress显示实时进度。
使用time dd ...统计命令执行时间 。
六、总结
dd命令凭借其底层操作能力,成为系统管理员的“瑞士军刀”,但其破坏性操作也需高度谨慎。建议结合rsync、Clonezilla等工具实现更安全的备份方案,仅在必要时使用dd处理低级数据任务
文章转载自老柴杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




