×

Linux的dd命令你可能没听过,但不影响它的强大实用!

hqy hqy 发表于2025-12-24 23:22:42 浏览2 评论0

抢沙发发表评论

Linux命令众多,但是每一个命令却也都体现出它存在即有意义。本文给大家分享关于dd命令的强大实用之处。虽然部分朋友没有用过,甚至没有听过这个命令,但是当你学完本文,你就惊叹它的强大功能了!

dd 是 Linux 系统中一个功能强大且经典的命令,全称是 Dataset Definition。它通常被称为“磁盘销毁者”,这虽然是个戏称,但也反映了如果使用不当,它确实可能带来灾难性后果。
dd 是一个用于低级别、按块复制和转换文件的工具。它可以用于复制文件、转换文件格式、创建磁盘映像以及进行磁盘备份和恢复等操作。

它与普通的 cp 命令有本质区别:

  • cp 操作的是文件内容

  • dd 操作的是原始的、底层的磁盘扇区或数据块,它不关心文件系统或文件结构。

一、dd命令语法

dd命令的基本语法如下所示:


dd [option]...
其中option是dd命令的可选参数,用于指定dd命令的功能和操作。
如以下是一个dd命令的具体示例,将一个名为input.py的文件拷贝到另一个名为output.py的文件中,并且每次读入和写出的字节数为1024字节:

dd if=input.py of=output.py ibs=1024 obs=1024
以下是dd命令的常用参数和选项:

1.if=文件名:指定输入文件名,默认为标准输入。

2.of=文件名:指定输出文件名,默认为标准输出。

3.ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

4.cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

5.skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

6.obs=bytes:一次写入bytes字节,即写入缓冲区的字节数。

7.bs=bytes:同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

8.cbs=byte:一次转换bytes字节。

9.count=blocks:只拷贝输入的blocks块,块大小等于ibs指定的字节数。

10.seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

11.status=progress:显示进度信息,例如每秒钟复制的字节数和进度百分比等。

12.conv=<关键字>:关键字可以有以下11种:













conversion:用指定的参数转换文件。ascii:转换ebcdic为asciiebcdic:转换ascii为ebcdicibm:转换ascii为alternate ebcdicblock:把每一行转换为长度为cbs,不足部分用空格填充unblock:使每一行的长度都为cbs,不足部分用空格填充lcase:把大写字符转换为小写字符ucase:把小写字符转换为大写字符swap:交换输入的每对字节noerror:出错时不停止notrunc:不截短输出文件sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

三、dd命令常用实例

1.通过dd命令创建一个空文件


dd if=/dev/zero of=test.txt bs=1M count=1000
该实例命令表示创建一个名为test.txt的空文件,大小为1000MB,其中每个块的大小为1MB。

2.通过dd命令完成文件复制


dd if=test_in.txt of=test_out.txt ibs=1024 obs=1024
该实例命令表示将一个名为test_in.txt的文件拷贝到另一个名为test_out.txt的文件中,并且每次读入和写出的字节数为1024字节。
3.通过dd命令实现将test1中的小写字母转换成大写字母,并且转成test2文件保存。

dd if=test1 of=test2 conv=ucase
4.通过dd命令将一个磁盘的内容复制到另一个磁盘中

dd if=/dev/sda of=/dev/sdb bs=4096
该实例命令表示将/dev/sda磁盘的内容复制到/dev/sdb磁盘中,并且块大小为4096字节。

5.通过dd命令将一个磁盘的内容复制到一个文件中


dd if=/dev/sda of=test.txt bs=4096 count=1000 status=progress
该实例命令表示将/dev/sda磁盘的前1000个块内容复制到test.txt文件中,每个块大小为4096字节,并且显示进度条信息。

6.通过dd备份整个硬盘:使用dd命令可以将整个硬盘备份到另一个硬盘中


dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
该实例命令表示将/dev/sda磁盘的内容复制到/dev/sdb磁盘中,每个块大小为4096字节。conv=noerror,sync则表示在复制过程中忽略读取中的错误,并将输出同步到对应磁盘中。

7.通过dd命令可以将文件从一种格式转换为另一种格式


dd if=input.txt of=output.bin bs=1 count=1

8.通过dd命令可以创建磁盘的镜像文件


dd if=/dev/cdrom of=image.iso
该实例命令表示要创建一个名为image.iso的CDROM镜像文件。

9.通过dd命令可以测试磁盘的读写速度


dd if=/dev/sda of=/dev/null bs=1M count=1000

10.结合time命令,通过dd命令测试对磁盘的读写操作








[root@localhost ~]#    time dd if=/dev/zero of=test.txt bs=1M count=1000 oflag=direct记录了1000+0 的读入记录了1000+0 的写出1048576000字节(1.0 GB)已复制,10.9335 秒,95.9 MB/秒real    0m11.022suser    0m0.040ssys     0m1.828s
该实例命令对磁盘读操作的速度可以达到95.9MB/s。并且生成test.txt文件。

四、总结

dd命令可以用于许多测试场景,其特点有几个:

1.强大的数据转换和拷贝功能

dd命令可以用来复制和转换文件、设备等,并且在拷贝过程中可以进行格式转换。它能够读取和写入指定的数据块,支持多种不同的数据块大小和转换方式,可以实现复杂的数据处理任务。

2.灵活的参数和选项

dd命令具有许多参数和选项,可以根据需要进行灵活的配置。例如,可以使用“if=”选项指定输入文件,使用“of=”选项指定输出文件,还可以设置块大小、转换方式等。这些选项提供了很大的灵活性,使得dd命令可以满足各种不同的需求。

3.底层数据处理

dd命令在底层进行数据处理,可以与操作系统底层进行交互。这使得它可以用于一些需要直接操作底层数据的任务,例如创建磁盘镜像、转换文件格式等。

4.需要谨慎使用

虽然dd命令非常强大,但使用不当可能导致数据丢失或损坏。因此,在使用dd命令之前,需要仔细了解其参数和选项的含义,并确保命令的正确性。此外,还需要谨慎处理数据,确保不会意外地覆盖或删除重要数据。


打赏

本文链接:https://www.jingber.cn/post/3980.html 转载需授权!

分享到:

群贤毕至

访客

您的IP地址是: