🏆作者简介,黑夜开发者,全栈领域新星创作者✌。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命令大全,以便更深入地理解和应用这些命令。