Linux dd 命令超详细详解ddData Duplicator数据复制底层块级拷贝工具直接读写磁盘 / 分区 / 文件无文件系统依赖常用于整盘备份、写启动盘、测磁盘速度、修复坏盘、内存 dump。⚠️高危命令写错of/dev/sda极易清空整块硬盘务必核对盘符一、基础语法bash运行dd [if输入源] [of输出目标] [bs块大小] [count块数量] [其他参数]核心必记参数表格参数含义ifFILEinput file输入源文件 / 分区/dev/sda1/ 光驱/dev/sr0/ 标准输入/dev/stdinofFILEoutput file输出文件 / 裸磁盘/dev/sdb/ 标准输出/dev/stdoutbsSIZE单次读写块大小默认 512 字节常用1K/4K/1M/1G越大速度越快countN只拷贝 N 个 bs 大小的数据不加则全量复制skipN输入源跳过前 N 个块bs 大小再读seekN输出文件跳过前 N 个块再写入辅助常用参数statusprogress实时打印读写进度、速度centos7/ubuntu16 支持最实用convxxx转换参数逗号分隔多参数convsync不足 bs 的块补 0 补齐convnoerror读出错跳过坏块继续坏盘备份必备convnotrunc不截断原有输出文件避免覆盖清空旧数据convsparse空洞文件优化不写全 0 块节省空间ibsSIZE/obsSIZE单独设置输入块、输出块bs 同时设置 ibsobs二、高频实战示例最常用场景1. 文件复制替代 cp但块级复制bash运行# bs4M提升速度显示实时进度 dd iftest.iso of/mnt/test.iso bs4M statusprogress2. 整盘备份全盘镜像系统备份神器bash运行# 把整块sda硬盘打包成镜像sda整盘sda1单个分区 dd if/dev/sda of/root/disk_sda.img bs4M statusprogress # 备份单个分区sda2 dd if/dev/sda2 ofsda2_back.img bs4M statusprogress3. 镜像还原到硬盘写 U 盘启动盘bash运行# 将iso写入U盘U盘为/dev/sdb千万别写成sda dd ifubuntu.iso of/dev/sdb bs4M statusprogress convsync查看磁盘lsblk/fdisk -l确认 U 盘盘符4. 从镜像恢复分区 / 硬盘bash运行dd ifdisk_sda.img of/dev/sda bs4M statusprogress5. 生成指定大小空文件测试用虚拟磁盘bash运行# 创建1G空文件bs1M count1024 → 1M*10241G dd if/dev/zero oftest.img bs1M count1024 statusprogress # /dev/zero无限输出0字节的伪设备/dev/urandom随机数据生成加密测试文件bash运行dd if/dev/urandom ofrand.img bs1M count1006. 磁盘读写测速bash运行# 写测速向磁盘写1G零数据 dd if/dev/zero of/tmp/test bs1M count1024 oflagdirect statusprogress # oflagdirect绕过系统缓存测真实裸盘速度 # 读测速 dd if/tmp/test of/dev/null bs1M count1024 iflagdirect statusprogress # /dev/null黑洞设备写入数据直接丢弃7. 坏盘数据抢救noerror 跳过坏扇区bash运行# 读取出错自动跳过坏块sync补齐块 dd if/dev/sdb ofbackup.img bs512 convnoerror,sync statusprogress8. 磁盘前 512 字节 MBR 引导扇区备份MBR 分区表存于硬盘前 512 字节bash运行# 只拷贝count1个块bs512备份sda主引导 dd if/dev/sda ofmbr_back.img bs512 count1 # 恢复引导 dd ifmbr_back.img of/dev/sda bs512 count1三、特殊伪设备详解dd 标配源/dev/zero源源不断全 0 数据 → 造空文件、擦盘/dev/null数据黑洞写入立刻消失 → 测速丢弃输出/dev/urandom//dev/random随机二进制数据 → 磁盘填充、加密测试/dev/stdin标准输入、/dev/stdout标准输出全盘擦除安全销毁数据慎用bash运行# 全盘填充随机数彻底抹除数据sdb整盘清空 dd if/dev/urandom of/dev/sdb bs4M statusprogress # 快速填0擦除 dd if/dev/zero of/dev/sdb bs4M statusprogress四、dd 进度查看中途忘记加 statusprogressdd 运行时另开终端bash运行# 查找dd进程PID pidof dd # 发送USR1信号让dd立刻打印一次进度 kill -USR1 PID五、dd 优缺点优点无视文件系统损坏分区、RAW 裸盘都能读写cp 做不到块级精准复制扇区一一对应整盘克隆 1:1系统内置命令所有 Linux 默认自带缺点默认 bs512 字节速度极慢务必手动加大 bs无文件压缩镜像体积 原盘大小可配合 gzip 压缩bash运行# 备份压缩整盘节省空间 dd if/dev/sda bs4M | gzip sda.img.gz # 解压还原 gzip -dc sda.img.gz | dd of/dev/sda bs4M statusprogress六、避坑重点of 目标盘符绝对不能写错sda 是系统盘写错直接删系统优先lsblk确认设备U 盘挂载时不要直接 dd最好umount /dev/sdb*卸载分区再写入bs 推荐1M/4M/16M过小速度巨慢过大内存占用高
linux的dd命令详解
发布时间:2026/7/6 15:03:32
Linux dd 命令超详细详解ddData Duplicator数据复制底层块级拷贝工具直接读写磁盘 / 分区 / 文件无文件系统依赖常用于整盘备份、写启动盘、测磁盘速度、修复坏盘、内存 dump。⚠️高危命令写错of/dev/sda极易清空整块硬盘务必核对盘符一、基础语法bash运行dd [if输入源] [of输出目标] [bs块大小] [count块数量] [其他参数]核心必记参数表格参数含义ifFILEinput file输入源文件 / 分区/dev/sda1/ 光驱/dev/sr0/ 标准输入/dev/stdinofFILEoutput file输出文件 / 裸磁盘/dev/sdb/ 标准输出/dev/stdoutbsSIZE单次读写块大小默认 512 字节常用1K/4K/1M/1G越大速度越快countN只拷贝 N 个 bs 大小的数据不加则全量复制skipN输入源跳过前 N 个块bs 大小再读seekN输出文件跳过前 N 个块再写入辅助常用参数statusprogress实时打印读写进度、速度centos7/ubuntu16 支持最实用convxxx转换参数逗号分隔多参数convsync不足 bs 的块补 0 补齐convnoerror读出错跳过坏块继续坏盘备份必备convnotrunc不截断原有输出文件避免覆盖清空旧数据convsparse空洞文件优化不写全 0 块节省空间ibsSIZE/obsSIZE单独设置输入块、输出块bs 同时设置 ibsobs二、高频实战示例最常用场景1. 文件复制替代 cp但块级复制bash运行# bs4M提升速度显示实时进度 dd iftest.iso of/mnt/test.iso bs4M statusprogress2. 整盘备份全盘镜像系统备份神器bash运行# 把整块sda硬盘打包成镜像sda整盘sda1单个分区 dd if/dev/sda of/root/disk_sda.img bs4M statusprogress # 备份单个分区sda2 dd if/dev/sda2 ofsda2_back.img bs4M statusprogress3. 镜像还原到硬盘写 U 盘启动盘bash运行# 将iso写入U盘U盘为/dev/sdb千万别写成sda dd ifubuntu.iso of/dev/sdb bs4M statusprogress convsync查看磁盘lsblk/fdisk -l确认 U 盘盘符4. 从镜像恢复分区 / 硬盘bash运行dd ifdisk_sda.img of/dev/sda bs4M statusprogress5. 生成指定大小空文件测试用虚拟磁盘bash运行# 创建1G空文件bs1M count1024 → 1M*10241G dd if/dev/zero oftest.img bs1M count1024 statusprogress # /dev/zero无限输出0字节的伪设备/dev/urandom随机数据生成加密测试文件bash运行dd if/dev/urandom ofrand.img bs1M count1006. 磁盘读写测速bash运行# 写测速向磁盘写1G零数据 dd if/dev/zero of/tmp/test bs1M count1024 oflagdirect statusprogress # oflagdirect绕过系统缓存测真实裸盘速度 # 读测速 dd if/tmp/test of/dev/null bs1M count1024 iflagdirect statusprogress # /dev/null黑洞设备写入数据直接丢弃7. 坏盘数据抢救noerror 跳过坏扇区bash运行# 读取出错自动跳过坏块sync补齐块 dd if/dev/sdb ofbackup.img bs512 convnoerror,sync statusprogress8. 磁盘前 512 字节 MBR 引导扇区备份MBR 分区表存于硬盘前 512 字节bash运行# 只拷贝count1个块bs512备份sda主引导 dd if/dev/sda ofmbr_back.img bs512 count1 # 恢复引导 dd ifmbr_back.img of/dev/sda bs512 count1三、特殊伪设备详解dd 标配源/dev/zero源源不断全 0 数据 → 造空文件、擦盘/dev/null数据黑洞写入立刻消失 → 测速丢弃输出/dev/urandom//dev/random随机二进制数据 → 磁盘填充、加密测试/dev/stdin标准输入、/dev/stdout标准输出全盘擦除安全销毁数据慎用bash运行# 全盘填充随机数彻底抹除数据sdb整盘清空 dd if/dev/urandom of/dev/sdb bs4M statusprogress # 快速填0擦除 dd if/dev/zero of/dev/sdb bs4M statusprogress四、dd 进度查看中途忘记加 statusprogressdd 运行时另开终端bash运行# 查找dd进程PID pidof dd # 发送USR1信号让dd立刻打印一次进度 kill -USR1 PID五、dd 优缺点优点无视文件系统损坏分区、RAW 裸盘都能读写cp 做不到块级精准复制扇区一一对应整盘克隆 1:1系统内置命令所有 Linux 默认自带缺点默认 bs512 字节速度极慢务必手动加大 bs无文件压缩镜像体积 原盘大小可配合 gzip 压缩bash运行# 备份压缩整盘节省空间 dd if/dev/sda bs4M | gzip sda.img.gz # 解压还原 gzip -dc sda.img.gz | dd of/dev/sda bs4M statusprogress六、避坑重点of 目标盘符绝对不能写错sda 是系统盘写错直接删系统优先lsblk确认设备U 盘挂载时不要直接 dd最好umount /dev/sdb*卸载分区再写入bs 推荐1M/4M/16M过小速度巨慢过大内存占用高