当前位置: 首页 > news >正文

linux的dd命令详解

Linux dd 命令超详细详解

dd=Data Duplicator(数据复制),底层块级拷贝工具,直接读写磁盘 / 分区 / 文件,无文件系统依赖,常用于:整盘备份、写启动盘、测磁盘速度、修复坏盘、内存 dump。

⚠️高危命令:写错of=/dev/sda极易清空整块硬盘,务必核对盘符!

一、基础语法

bash

运行

dd [if=输入源] [of=输出目标] [bs=块大小] [count=块数量] [其他参数]

核心必记参数

表格

参数含义
if=FILEinput file,输入源:文件 / 分区/dev/sda1/ 光驱/dev/sr0/ 标准输入/dev/stdin
of=FILEoutput file,输出:文件 / 裸磁盘/dev/sdb/ 标准输出/dev/stdout
bs=SIZE单次读写块大小(默认 512 字节),常用1K/4K/1M/1G,越大速度越快
count=N只拷贝 N 个 bs 大小的数据,不加则全量复制
skip=N输入源跳过前 N 个块(bs 大小)再读
seek=N输出文件跳过前 N 个块再写入

辅助常用参数

  1. status=progress实时打印读写进度、速度(centos7+/ubuntu16 + 支持,最实用)
  2. conv=xxx转换参数(逗号分隔多参数)
    • conv=sync:不足 bs 的块补 0 补齐
    • conv=noerror:读出错跳过坏块继续(坏盘备份必备)
    • conv=notrunc:不截断原有输出文件(避免覆盖清空旧数据)
    • conv=sparse:空洞文件优化,不写全 0 块节省空间
  3. ibs=SIZE/obs=SIZE:单独设置输入块、输出块(bs 同时设置 ibs+obs)

二、高频实战示例(最常用场景)

1. 文件复制(替代 cp,但块级复制)

bash

运行

# bs=4M提升速度,显示实时进度 dd if=test.iso of=/mnt/test.iso bs=4M status=progress

2. 整盘备份(全盘镜像,系统备份神器)

bash

运行

# 把整块sda硬盘打包成镜像(sda=整盘,sda1=单个分区) dd if=/dev/sda of=/root/disk_sda.img bs=4M status=progress # 备份单个分区sda2 dd if=/dev/sda2 of=sda2_back.img bs=4M status=progress

3. 镜像还原到硬盘(写 U 盘启动盘)

bash

运行

# 将iso写入U盘(U盘为/dev/sdb,千万别写成sda!) dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=sync

查看磁盘:lsblk/fdisk -l确认 U 盘盘符

4. 从镜像恢复分区 / 硬盘

bash

运行

dd if=disk_sda.img of=/dev/sda bs=4M status=progress

5. 生成指定大小空文件(测试用虚拟磁盘)

bash

运行

# 创建1G空文件,bs=1M count=1024 → 1M*1024=1G dd if=/dev/zero of=test.img bs=1M count=1024 status=progress # /dev/zero:无限输出0字节的伪设备
  • /dev/urandom:随机数据,生成加密测试文件

bash

运行

dd if=/dev/urandom of=rand.img bs=1M count=100

6. 磁盘读写测速

bash

运行

# 写测速:向磁盘写1G零数据 dd if=/dev/zero of=/tmp/test bs=1M count=1024 oflag=direct status=progress # oflag=direct:绕过系统缓存,测真实裸盘速度 # 读测速 dd if=/tmp/test of=/dev/null bs=1M count=1024 iflag=direct status=progress # /dev/null:黑洞设备,写入数据直接丢弃

7. 坏盘数据抢救(noerror 跳过坏扇区)

bash

运行

# 读取出错自动跳过坏块,sync补齐块 dd if=/dev/sdb of=backup.img bs=512 conv=noerror,sync status=progress

8. 磁盘前 512 字节 MBR 引导扇区备份

MBR 分区表存于硬盘前 512 字节

bash

运行

# 只拷贝count=1个块,bs=512,备份sda主引导 dd if=/dev/sda of=mbr_back.img bs=512 count=1 # 恢复引导 dd if=mbr_back.img of=/dev/sda bs=512 count=1

三、特殊伪设备详解(dd 标配源)

  1. /dev/zero:源源不断全 0 数据 → 造空文件、擦盘
  2. /dev/null:数据黑洞,写入立刻消失 → 测速丢弃输出
  3. /dev/urandom//dev/random:随机二进制数据 → 磁盘填充、加密测试
  4. /dev/stdin标准输入、/dev/stdout标准输出

全盘擦除(安全销毁数据,慎用!)

bash

运行

# 全盘填充随机数,彻底抹除数据(sdb整盘清空) dd if=/dev/urandom of=/dev/sdb bs=4M status=progress # 快速填0擦除 dd if=/dev/zero of=/dev/sdb bs=4M status=progress

四、dd 进度查看(中途忘记加 status=progress)

dd 运行时另开终端:

bash

运行

# 查找dd进程PID pidof dd # 发送USR1信号,让dd立刻打印一次进度 kill -USR1 PID

五、dd 优缺点

优点

  1. 无视文件系统:损坏分区、RAW 裸盘都能读写,cp 做不到
  2. 块级精准复制:扇区一一对应,整盘克隆 1:1
  3. 系统内置命令,所有 Linux 默认自带

缺点

  1. 默认 bs=512 字节速度极慢,务必手动加大 bs
  2. 无文件压缩,镜像体积 = 原盘大小(可配合 gzip 压缩)

bash

运行

# 备份+压缩整盘,节省空间 dd if=/dev/sda bs=4M | gzip > sda.img.gz # 解压还原 gzip -dc sda.img.gz | dd of=/dev/sda bs=4M status=progress

六、避坑重点

  1. of = 目标盘符绝对不能写错,sda 是系统盘写错直接删系统;优先lsblk确认设备
  2. U 盘挂载时不要直接 dd,最好umount /dev/sdb*卸载分区再写入
  3. bs 推荐1M/4M/16M,过小速度巨慢,过大内存占用高
http://www.jsqmd.com/news/1135480/

相关文章:

  • 别被坑了!2026实测靠谱的AI写作辅助平台|省心版
  • 【RHCA+】基本正则表达式
  • 2026年暑期 AI 简历工具推荐:毕业生求职必备
  • 十七.读写区块索引(上)
  • OpenCore Legacy Patcher:一场针对苹果硬件生态的技术革命与架构重构
  • 如何为QQNT桌面客户端部署LiteLoader插件加载器
  • C语言从入门到精通 第2讲——数据类型和变量
  • Qwt 7.0 新特性介绍 — 更现代、更强大的Qt数据可视化库
  • 注意力塑造现实
  • Tetris Game核心功能解析:从手动操作到AI自动决策的完美切换
  • PIC18F46K40与171010550构建数字DC-DC降压系统
  • 第9课:比较运算符与if 判断语句
  • OpenClaw 安装使用指南 (Windows)-对接钉钉、飞书、QQ
  • 五大神经网络模型原理与实战:CNN、RNN、GAN、Transformer、GNN选型指南
  • 读普林斯顿计算机公开课14未来
  • 图像增强 Gamma 校正:从原理到调参,3 个关键参数优化指南
  • 高性能异步网络架构与多线程下载管理:EhViewer技术实现深度解析
  • MultiPathNet核心原理解析:为什么多路径网络能提升目标检测精度?
  • 系统运行与维护核心知识梳理
  • Grafana Infinity Datasource:解锁多源数据可视化新维度
  • Linux命令小全
  • STM32开发
  • 4.prompt
  • BI笔记之---增量方式处理多维数据集
  • 可靠性测试之 EMC:一文搞懂所有测试项和标准
  • OpenClaw 的分布式集群功能
  • CVE-2023-4966漏洞深度解析:NetScaler信息泄露原理与修复实战
  • 代理浏览器工具_agent-browser
  • 从向量空间到海森矩阵:剥开神经网络“寻底”的数学真相
  • Si4731与PIC18LF4680构建数字收音机系统详解