Linux命令200例:dd命令详解及实际应用场景

news2024/11/26 0:25:31

在这里插入图片描述

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于专栏:Linux命令大全。
🏆本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入讲解。欢迎提前锁定关注。
🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀一、什么是 dd 命令
  • 🚀二、如何使用 dd 命令
  • 🚀三、dd 命令的应用场景
    • 🔎3.1. 备份和还原整个硬盘
    • 🔎3.2. 创建虚拟磁盘镜像
    • 🔎3.3. 擦除硬盘数据
    • 🔎3.4. 写入 ISO 镜像到 U 盘
    • 🔎3.5. 创建随机数据文件
    • 🔎3.6. 按行读取文件
    • 🔎3.7. 迁移分区数据
    • 🔎3.8. 安全擦除固态硬盘 (SSD)
    • 🔎3.9. 检查设备读写速度
    • 🔎3.10. 压缩文件到 tar 归档
    • 🔎3.11. 从网络流复制数据
    • 🔎3.12. 恢复损坏的光盘数据
    • 🔎3.13. 制作以太网启动磁盘镜像
    • 🔎3.14. 修复损坏的分区表
    • 🔎3.15. 复制整个目录结构
  • 🚀四、总结


🚀一、什么是 dd 命令

dd 命令是一个在 Unix 和类 Unix 系统中非常强大的命令行工具,用于复制和转换文件。它可以从一个文件或设备向另一个文件或设备进行复制,同时还可以对数据进行转换和操作。

在这里插入图片描述

🚀二、如何使用 dd 命令

dd 命令的基本语法为:

dd if=input_file of=output_file [options]

其中 if 表示输入文件,of 表示输出文件,options 是一些可选参数。下面是一些常用的参数:

  • bs:设置每次读取和写入的块大小(单位为字节或者是可以添加的后缀,如b、k、m等),默认为512字节。
  • count:设置要复制的块数。
  • iflag:设置输入选项,常用的选项有direct(绕过缓存直接读取)和sync(同步数据到磁盘)。
  • oflag:设置输出选项,常用的选项有direct(绕过缓存直接写入)和sync(同步数据到磁盘)。

🚀三、dd 命令的应用场景

dd 命令由于其灵活性和强大的功能,在各种不同的场景中都可以发挥作用。下面列举了一些常见的应用场景和实际例子。

🔎3.1. 备份和还原整个硬盘

dd if=/dev/sda of=/path/to/backup.img

这个命令将整个硬盘 /dev/sda 的内容复制到文件 backup.img 中,从而实现了对硬盘的备份。如果需要还原备份,可以使用以下命令:

dd if=/path/to/backup.img of=/dev/sda

🔎3.2. 创建虚拟磁盘镜像

dd if=/dev/zero of=/path/to/image.img bs=1G count=10

这个命令将创建一个大小为10GB的虚拟磁盘镜像文件 image.img

🔎3.3. 擦除硬盘数据

dd if=/dev/zero of=/dev/sda bs=4096

这个命令会将硬盘 /dev/sda 上的所有数据擦除掉,将每个块都写入零值,以保护隐私或者重新使用硬盘。

🔎3.4. 写入 ISO 镜像到 U 盘

dd if=/path/to/image.iso of=/dev/sdb bs=4M conv=fdatasync

这个命令将 ISO 镜像文件 image.iso 写入 U 盘设备 /dev/sdb 中。

🔎3.5. 创建随机数据文件

dd if=/dev/urandom of=/path/to/random.file bs=1M count=10

这个命令将使用 /dev/urandom 生成的随机数据创建一个大小为10MB的文件 random.file

🔎3.6. 按行读取文件

dd if=/path/to/input.txt of=/path/to/output.txt bs=1 count=1000

这个命令将读取文件 input.txt 的前1000个字节,并将其保存到文件 output.txt 中。

🔎3.7. 迁移分区数据

dd if=/dev/sda1 of=/dev/sdb1 bs=4M conv=fdatasync

这个命令将硬盘分区 /dev/sda1 的数据复制到另一个硬盘分区 /dev/sdb1 中。

🔎3.8. 安全擦除固态硬盘 (SSD)

dd if=/dev/zero of=/dev/sda bs=1M count=1 oflag=direct

这个命令通过使用 oflag=direct,可以直接写入固态硬盘 (SSD),以实现更安全地擦除数据。

🔎3.9. 检查设备读写速度

dd if=/dev/zero of=/tmp/ddtest bs=1M count=1000 conv=fdatasync

这个命令将在 /tmp/ddtest 文件中写入1000MB的数据,并报告写入速度,可以用来测试设备的读写速度。

🔎3.10. 压缩文件到 tar 归档

tar cf - /path/to/files | dd of=/path/to/archive.tar.gz bs=1M

这个命令将目录 /path/to/files 下的所有文件和子目录压缩成一个 tar 归档文件 archive.tar.gz

🔎3.11. 从网络流复制数据

dd if=tcp://192.168.0.100:1234 of=/path/to/output.file bs=1M

这个命令将从 TCP 网络流中读取数据,并将其写入文件 output.file

🔎3.12. 恢复损坏的光盘数据

dd if=/dev/cdrom of=/path/to/backup.iso bs=2048 conv=noerror,sync

这个命令将尝试恢复损坏的光盘数据,并将其保存为 ISO 镜像文件 backup.iso

🔎3.13. 制作以太网启动磁盘镜像

dd if=/dev/zero of=/path/to/networkboot.img bs=1M count=10
mkfs.ext4 /path/to/networkboot.img
mount /path/to/networkboot.img /mnt
cp -r /path/to/networkboot/* /mnt/
umount /mnt

这个命令将创建一个大小为10MB的磁盘镜像,并将其中的内容修改为网络启动所需的文件系统,并将文件复制到镜像中。

🔎3.14. 修复损坏的分区表

dd if=/dev/sda of=/path/to/parttable.backup bs=512 count=1
dd if=/path/to/parttable.backup of=/dev/sda bs=512 count=1

这个命令将备份并修复 /dev/sda 上的分区表。

🔎3.15. 复制整个目录结构

cd /path/to/source
find . -type d -exec mkdir -p "/path/to/target/{}" \;

这个命令将递归地复制源目录下的所有子目录结构到目标目录中,而不复制实际的文件内容。

🚀四、总结

在本篇文章中,我们详细讨论了 Linux 中的 dd 命令。我们了解了 dd 命令的基本语法和一些常用参数,并举例说明了其在各种应用场景下的实际用法。希望这些例子能够帮助你更好地理解和使用 dd 命令。
在这里插入图片描述
dd 命令是一个非常强大和灵活的工具,但在使用时需要格外小心,因为它可以对数据进行直接操作,而且一些操作可能是不可逆的。因此,在使用 dd 命令时,请务必牢记你正在处理的数据的重要性,并谨慎操作。

推荐你阅读本专栏 Linux命令大全,以便更深入地理解和应用这些命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/872868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx禁用3DES和DES弱加密算法

nginx禁用3DES和DES弱加密算法 项目背景 最近护网行动,收到漏洞报告,如下: 漏洞名称SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】详细描述TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。 TLS…

【vue2类型助手】vue2-cli 实现为 vue2 项目中的组件添加全局类型提示

实现 vue2 全局组件提示 vue2 项目全局注册组件直接使用没有提示 由于vue2中使用volar存在很大的性能问题,所以只能继续使用vetur,但是这样全局组件会没有提示,这对于开发来说,体验十分不友好,所以开发此cli并借助ve…

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现LSTM长短期记忆神经…

OpenCV基本操作——算数操作

目录 图像的加法图像的混合 图像的加法 两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值 注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加的是模运算 import numpy as np import cv2 as cv imp…

k8s 自身原理 4

前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧 master 节点: etcd 存储资源配置,ApiServer 提供 RESTful Api 用于交互,scheduler 用于调度 p…

通过将信号频谱与噪声频谱进行比较,自动检测适当的带通滤波器转折频率研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

低代码已经发展到什么水平了

陈老老老板🦸 👨‍💻本文专栏:生活(主要讲一下自己生活相关的内容) 👨‍💻本文简述:生活就像海洋,只有意志坚强的人,才能到达彼岸。 👨‍💻上一篇…

simulink学习笔记:基于模型的控制和pid整定

在学习的时候发现了一个很好的学习simulink的网站,打算来练练手:Introduction: Simulink Control,过程中会涉及到搭建动力学模型和设计pid控制器(整定pid参数)。该模型描述的是火车的两节车厢,对前一节车厢…

迪瑞克斯拉算法 — 优化

在上一篇迪瑞克斯拉算法中将功能实现了出来,完成了图集中从源点出发获取所有可达的点的最短距离的收集。 但在代码中getMinDistanceAndUnSelectNode()方法的实现并不简洁,每次获取minNode时,都需要遍历整个Map,时间复杂度太高。这…

《Zookeeper》源码分析(九)之选举通信网络

在上一篇文章中讲到QuorumCnxManager,它负责zookeeper服务器在选举期间最底层的网络通信,整个网络涉及到的类如下: 整个网络建立的过程如下: 选举前创建好QuorumCnxManager实例,并在QuorumCnxManager构造函数中创建好…

scope组件穿透

今天我们以单选框为例来探究一下样式的穿透问题 1.代码 <template><div class""><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-r…

glOrtho与gluOrtho2D 的作用

gluOrtho2D 函数设置二维正交裁剪区域。 相当于调用 zNear -1 且 zFar 1 的 glOrtho 。 glOrtho定义二维正交投影矩阵&#xff0c;这个矩阵会把视图&#xff08;摄像机&#xff09;空间的坐标转换到一个裁剪空间&#xff0c;一言以蔽之&#xff1a;glOrtho定义了裁剪空间&…

Netty:DelimiterBasedFrameDecoder分析

说明 io.netty.handler.codec.DelimiterBasedFrameDecoder是ByteToMessageDecoder的一个实现类&#xff0c;用一个或多个分割符拆分接收到的 ByteBuf。这个主要用于解析分隔符在帧的末尾的情况。注意&#xff0c;如果分割符在帧的开头&#xff0c;那么解析出来的帧的长度是0&a…

从一到无穷大 #10 讨论 Apache IoTDB 大综述中看到的优劣势

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言问题定义新技术数据模型schemalessTsfile设计双MemTable高级可扩展查询其他 IotD…

如何实现浅拷贝和深拷贝

一、浅拷贝的实现方法 1.Object.assign方法 let obj1{name:"aaa",}let obj2{age:20}let obj3Object.assign(obj1,obj2)// obj3.age30console.log(obj1);console.log(obj3);console.log(obj1obj3);console.log(obj1obj3); 结果为&#xff1a; 2.直接赋值 let obj1{n…

sql中union all、union、intersect、minus的区别图解,测试

相关文章 sql 的 join、left join、full join的区别图解总结&#xff0c;测试&#xff0c;注意事项 1. 结论示意图 对于intersect、minus&#xff0c;oracle支持&#xff0c;mysql不支持&#xff0c;可以变通&#xff08;in或exists&#xff09;实现 2.测试 2.1.创建表和数…

将Map存到数据库中,并且支持数据类型原样取回

1.数据库设计 1.1 表设计 create table variables (id bigint not null comment 主键,business_key varchar(128) null comment 业务key,data_key varchar(128) null comment Map中的key,data_value varchar(…

35岁职业危机?不存在!体能断崖?不担心

概述 90年&#xff0c;硕士毕业&#xff0c;干了快8年的Java开发工作。现年33岁&#xff0c;再过2年就要35岁。 工作这些年&#xff0c;断断续续也看过不少35岁找不到工作&#xff0c;转行&#xff0c;降薪入职的传闻、案例。 35岁&#xff0c;甚至30岁之后&#xff0c;体能…

【Linux操作系统】文件描述符fd

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ Linux之路       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1…

easyx图形库基础:1.基本概念的介绍+图形的绘制。

基本概念的介绍图形的绘制 一.基本概念的介绍。1.为什么要使用easyx图形库2.安装easyx图形库。3.语法相关 二.图形绘制1.窗体创建和坐标的概念。1.基本窗体的创建。2.坐标概念3.改变逻辑坐标。 2.设置图形颜色1.设置描边颜色和描边样式。2.设置图形填充颜色和填充样式3.绘制图形…