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

Linux学习之dd命令使用

一、dd 命令核心基础

1. 核心语法

dd命令的核心是数据读写与转换,所有操作都围绕「输入源」和「输出目标」展开,基础格式:

ddif=<输入源>of=<输出目标>[选项/参数]
  • if

    (input file):指定数据来源(文件、磁盘设备、特殊设备如/dev/zero等)

  • of

    (output file):指定数据目标(文件、磁盘设备等)

2. 核心参数(高频使用)

参数

作用

bs=bytes

单次读写的块大小(如 4M、1G),越大复制效率越高(需匹配设备特性)

count=blocks

仅读写指定「块数」(块大小由 bs/ibs 定义),用于精准控制数据量

status=progress

实时显示进度(新手必备,避免不知道命令是否在运行)

conv=关键字

数据转换/容错(如noerror出错不停止、fsync强制落盘、ucase转大写)

iflag/oflag

控制「输入/输出」的 I/O 行为(如direct绕过缓存,测真实性能)

二、dd 命令典型应用场景(附解释)

按使用频率和实用性分类,每个案例标注「核心作用+注意事项」:

1. 文件操作类

(1)基础文件复制(替代 cp,适合大文件)
ddif=/path/sourcefile of=/path/destfile bs=4M status=progress
  • 优势:bs可自定义块大小,大文件复制效率高于cpstatus=progress实时看进度。

(2)文本内容转换
# 小写转大写 ddif=testfile of=testfile_upper conv=ucase # 大写转小写 ddif=testfile of=testfile_lower conv=lcase

2. 磁盘/分区操作类(核心高频)

(1)磁盘/分区备份(生成镜像文件)
# 备份 /dev/sda1 分区到镜像文件 ddif=/dev/sda1 of=/backup/sda1.img bs=4M status=progress conv=noerror,fsync
  • noerror

    :遇到坏块不停止(避免备份中断);fsync:确保数据完全写入磁盘。

(2)镜像恢复到磁盘/分区
# 把镜像恢复到 /dev/sda1(⚠️ 目标分区会被覆盖,务必确认路径!) ddif=/backup/sda1.img of=/dev/sda1 bs=4M status=progress conv=fsync
(3)制作启动盘(写入 ISO 到 U 盘)
# /dev/sdb 是 U 盘设备(不是分区!如 /dev/sdb1 错误) ddif=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync
(4)备份/恢复分区表(精准操作)
# 备份分区表(MBR 分区表前 512 字节包含分区信息) ddif=/dev/sda of=/backup/partition_table bs=512count=1status=progress # 恢复分区表(⚠️ 风险极高,确保设备路径正确) ddif=/backup/partition_table of=/dev/sda bs=512count=1status=progress

3. 性能测试类

(1)测试磁盘读取速度(绕过缓存)
# /dev/null 是空设备,不写入数据;iflag=direct 绕过系统缓存,测真实速度 ddif=/dev/sda of=/dev/null bs=1G count=1iflag=direct status=progress
(2)测试磁盘写入速度(绕过缓存)
# /dev/zero 生成空数据;oflag=direct 绕过缓存,测真实写入速度 ddif=/dev/zero of=/tmp/test_write bs=1G count=1oflag=direct status=progress

4. 数据擦除类(安全删除设备数据)

# 用随机数据覆盖整块磁盘(/dev/sda),无法恢复(耗时久) ddif=/dev/urandom of=/dev/sda bs=1M status=progress

三、I/O 行为控制:iflag/oflag 扩展

这两个参数是「精准控制读写行为」的关键,新手重点掌握以下值:

参数

作用

direct

绕过系统缓存,直接读写硬件(测真实磁盘性能必用)

sync

等待数据完全写入/读出后再继续(确保数据一致性)

append

仅 oflag 可用,以追加模式写入(不覆盖原有内容)

fullblock

仅 iflag 可用,累积完整块后再处理(避免数据错误)

示例:

# 精准测试 4K 块大小的读取性能 ddif=/dev/sdb of=/dev/null bs=4K count=1000iflag=direct,fullblock status=progress

四、实战案例:swap 分区动态扩容

swap 是Linux的虚拟内存,通过dd配合其他命令可动态扩容,步骤如下(完整可执行):

# 1. 创建 16G 的 swap 文件(fallocate 更快,dd 更兼容) fallocate -l 16G /swapfile # 快速创建空文件 # 或用 dd(兼容性更好):dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress # 2. 初始化 swap 文件(格式化) mkswap /swapfile # 3. 启用 swap 文件 swapon /swapfile # 4. 设置永久生效(重启后仍生效) echo"/swapfile none swap defaults 0 0">> /etc/fstab # 5. 验证效果(查看 swap 大小) free -h
  • 关键:/swapfile的权限需为600(若权限不对,执行chmod 600 /swapfile)。


总结

  1. dd 核心语法是 if=输入 of=输出 [参数],bs(块大小)和 status=progress是新手最常用的参数;
  2. 磁盘/分区操作(备份、恢复、启动盘制作)是dd的核心场景,操作前务必确认设备路径(避免覆盖重要数据);

  3. 性能测试需加iflag/oflag=direct绕过缓存,才能得到真实的磁盘读写速度;

  4. swap 扩容中,dd if=/dev/zero用于生成空数据文件,是fallocate的兼容替代方案。

不想错过文章内容?读完请点一下“在看,加个关注”,您的支持是我创作的动力

期待您的一键三连支持(点赞、在看、分享~)

http://www.jsqmd.com/news/373313/

相关文章:

  • 【深度天赋挖掘机】我的天赋如何应用到减肥
  • AI写论文实用攻略!这4个AI论文生成工具,助你快速完成论文!
  • 6.4 手把手 用create_react_agent做出鲜花定价Agent
  • 2026年液体香薰选购指南:实力品牌评测与推荐,助眠香薰/水性香氛精油/扩香木香薰/喷雾香薰/固体香氛,香薰供应商推荐 - 品牌推荐师
  • KRS(Kria Robotics Stack):Zynq / FPGA 机器人开发,迈向完整 ROS 2 系统的一步
  • 策马扬鞭迎新春|IoTDB 陪你稳稳过年
  • 快看2026国内工业乙醇供应商口碑推荐榜单,乙醇/食用酒精/回收乙醇/回收废酒精/回收废乙醇/工业酒精,工业乙醇品牌排行 - 品牌推荐师
  • AI教材生成神器,低查重率保障,助力打造专业权威教材!
  • 无代理、零侵扰的ENOVIA许可证使用数据采集方案
  • 萝卜?纸巾?真蚌!猫猫真的分不清萝卜和纸巾吗?
  • 2026年三维扫描仪的用途解析:启源视觉为何更适合工业现场 - 工业三维扫描仪评测
  • AI教材生成新突破!低查重率一键搞定,高效编写优质教材!
  • 2000-2024年各省结婚、离婚、再婚、单身等数据
  • AI写论文的绝佳帮手!4款AI论文生成工具,助你轻松完成论文!
  • 大型装备制造企业ENOVIA许可证成本优化与治理案例
  • 【深度天赋挖掘机】我给 AI 一个提示词,结果被一步步问到了人生底层
  • 用过才敢说 10个降AI率软件降AIGC网站:本科生必看的降AI率测评与推荐
  • 完美,竟然用一个脚本就把系统升级到 https 了,且永久免费!
  • 阿里Qwen-Image-2.0重磅发布!集生图编辑于一体,一步API平台快速接入
  • Day-0支持|摩尔线程MTT S5000率先完成对GLM-5的适配
  • 为什么 wait 方法定义在 Object 类里面,而不是 Thread 类?
  • 2007-2024年各省农林牧渔总产值、农业总产值数据
  • CD79B抗体如何成为B细胞疾病的精准治疗工具?
  • CD68抗体如何提升浆膜腔积液细胞学诊断的准确性?
  • 医学数据大肆“造假“,咱们审稿人怎么发现“有水分的”?
  • Redis 6.0 除了多线程,别忘了这个牛逼特性!
  • 从此告别拖延 10个AI论文网站测评:本科生毕业论文写作全攻略
  • C#每日面试题-简述逆变和协变
  • 赶deadline必备! 8个AI论文平台测评:研究生学术写作与毕业论文神器推荐
  • 在 Python Pytest 中传递函数到测试文件