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

【Linux系列】dd 命令的深度解析与应用实践

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • kwan 的解忧杂货铺:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • dd 命令概述
      • 命令起源与定位
      • 基本命令格式
    • 核心参数详解
      • 输入输出控制
      • 数据转换选项
    • 实用场景示例
      • 1. 磁盘/分区备份与恢复
      • 2. 制作可启动 USB
      • 3. 磁盘性能测试
      • 4. 安全数据擦除
    • 高级应用技巧
      • 网络传输数据
      • 实时压缩备份
      • 精确恢复分区表
    • 风险与注意事项
    • 性能优化策略
    • 替代方案比较
    • 典型问题解决
      • 1. 处理坏道磁盘
      • 2. 提取文件片段
      • 3. 修改二进制文件

dd 命令是 Linux 系统中一个功能强大且用途广泛的命令行工具,其名称来源于"Data Duplicator"(数据复制器)。作为系统管理员和数据恢复专家的"瑞士军刀",dd 命令能够以原始方式处理数据,完成从简单文件复制到复杂磁盘操作的各类任务。

dd 命令概述

命令起源与定位

dd 命令最早出现在 UNIX 操作系统中,后被移植到 Linux 平台。它不同于普通的文件复制命令(如 cp),dd 以底层块设备的方式操作数据,可以精确控制数据流的每一个细节。这种特性使其成为:

  • 磁盘克隆与备份的理想工具
  • 数据恢复过程中的关键利器
  • 性能测试与基准测量的有效手段
  • 低级文件操作的灵活解决方案
    在这里插入图片描述

基本命令格式

dd 命令的基本语法结构为:

dd if=<输入文件> of=<输出文件> [选项参数]

其中:

  • if(input file):指定输入源,可以是设备文件或普通文件
  • of(output file):指定输出目标,同样可以是设备或文件
  • 选项参数:控制数据传输的各种特性

核心参数详解

输入输出控制

参数说明示例
if输入文件if=/dev/sda
of输出文件of=backup.img
bs块大小bs=4M
count复制块数count=1024
skip跳过输入开始的块数skip=10
seek跳过输出开始的块数seek=10

数据转换选项

参数功能典型应用
conv转换选项conv=notrunc,noerror
status进度显示status=progress

实用场景示例

1. 磁盘/分区备份与恢复

创建磁盘镜像:

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

此命令将整个 sda 磁盘备份为镜像文件,bs 参数设置块大小提高效率,status 显示进度。

恢复磁盘镜像:

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

注意:此操作会覆盖目标磁盘所有数据!

2. 制作可启动 USB

dd if=ubuntu.iso of=/dev/sdb bs=4M conv=fsync status=progress

将 ISO 镜像直接写入 USB 设备(sdb),制作启动盘。

3. 磁盘性能测试

dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct

测试写入速度,oflag=direct 绕过缓存获取真实磁盘性能。

4. 安全数据擦除

dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

用随机数据覆盖整个设备,实现安全擦除。

高级应用技巧

网络传输数据

结合 netcat 实现远程磁盘克隆:
接收端:

nc -l 8888 | dd of=/dev/sdb

发送端:

dd if=/dev/sda | nc receiver_ip 8888

实时压缩备份

dd if=/dev/sda | gzip -c | split -b 2G - backup.img.gz.

创建压缩分卷备份,适合大磁盘备份到多个小文件。

精确恢复分区表

dd if=/dev/sda of=ptable.bak bs=512 count=1

备份 MBR 分区表(前 512 字节)。

dd if=ptable.bak of=/dev/sda bs=512 count=1

恢复分区表而不影响分区数据。

风险与注意事项

  1. 目标设备确认:错误的 of 参数可能导致数据灾难性丢失
  2. 权限要求:通常需要 root 权限操作设备文件
  3. 性能影响:大容量磁盘操作可能耗时较长
  4. 资源消耗:大量 I/O 操作可能影响系统性能

安全操作建议:

  • 操作前使用lsblk确认设备标识
  • 先在测试环境验证命令
  • 考虑使用conv=noerror,sync处理坏块
  • 对关键数据提前做好备份

性能优化策略

  1. 块大小调整:根据硬件特性优化 bs 参数(通常 4M-8M 较佳)
  2. 并行处理:结合 pv 工具监控进度:
    dd if=/dev/sda | pv -s $(blockdev --getsize64 /dev/sda) | dd of=/dev/sdb
    
  3. 绕过缓存:对性能测试使用 oflag=direct
  4. 限速控制:通过 pv 限制传输速率:
    dd if=/dev/sda | pv -L 10m | dd of=/dev/sdb
    

替代方案比较

虽然 dd 功能强大,但在某些场景下可以考虑替代工具:

工具优势劣势
cp简单文件复制不能处理设备文件
rsync增量备份、网络传输不适用低级操作
cat简单数据流处理缺少精细控制
pv进度显示、限速功能较单一

典型问题解决

1. 处理坏道磁盘

dd if=/dev/sda of=/dev/sdb conv=noerror,sync

noerror 跳过错误,sync 用 NULL 填充无法读取的块。

2. 提取文件片段

dd if=largefile.bin of=part.bin bs=1M skip=100 count=10

提取从 100MB 位置开始的 10MB 数据。

3. 修改二进制文件

echo -n "NEWDATA" | dd of=file.bin bs=1 seek=100 conv=notrunc

在文件偏移 100 字节处写入新数据,不截断原文件。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

  • python学习笔记七(文件)
  • Pattern and Match
  • vim 练习题
  • Linux 系统如何挂载U盘
  • 动态规划问题 -- 多状态模型(打家劫舍II)
  • 基于STM32、HAL库的ADAU1701JSTZ-RL音频接口芯片驱动程序设计
  • 【ArcGIS】根据shp范围生成系列等距点:范围外等距点+渔网点(Python全代码)
  • Windows系统配置WSL2及Cuda
  • 在spark中配置历史服务器
  • Weblogic 反序列化远程命令执行漏洞 CVE-2019-2725 详解
  • 【25软考网工】第六章(5)应用层安全协议
  • vue 中绑定样式 【class样式绑定】
  • 【Ubuntu】扩充磁盘大小
  • langchain提示词的使用
  • 《算法导论(第4版)》阅读笔记:p39-p48
  • 电子电器架构 --- 区域计算架构(Zonal Compute)备战下一代电子电气架构
  • 重庆医科大学附属第二医院外科楼外挡墙自动化监测
  • 保护数据安全的关键一步-安装加密软件
  • 修复aosp中QQ无法跳转到短信的问题
  • 【android bluetooth 框架分析 02】【Module详解 6】【StorageModule 模块介绍】
  • 习近平会见哥伦比亚总统佩特罗
  • 广东韶关一镇干部冲进交通事故火海救人,获授“见义勇为”奖励万元
  • 小米SU7 Ultra风波升级:数百名车主要求退车,车主喊话雷军“保持真诚”
  • 27岁杨阳拟任苏木镇党委副职,系2020年内蒙古自治区选调生
  • 7月打卡乐高乐园,还可以去千年古镇枫泾参加这个漫画艺术季
  • 墨西哥宣布就“墨西哥湾”更名一事起诉谷歌