Linux 中的 dd 命令及示例
Linux 将文件系统上存储的任何内容都视为文件,甚至是块设备。这意味着 Linux 中的 dd 命令等命令在许多情况下都非常方便,因为它可用于转换和复制终端中的文件、备份磁盘或擦除数据。 dd 命令既基本又实用,即使在最基本的 Linux 发行版安装上也可以使用。
如果您对 Linux 比较陌生,dd 命令可能看起来有点令人困惑,因为它的语法与大多数其他 Linux 命令有很大不同。默认情况下,dd 命令从标准输入读取并写入标准输出。但我们可以调用 if 和 of 命令行选项来指定输入和输出。
在本教程中,我们将通过示例向您展示使用 dd 命令及其各种命令行选项的最佳方法。
在本教程中您将学习:
如何在 Linux 上使用 dd 命令
常用选项
警告
使用dd时要非常小心,包括下面的示例。它可以轻松擦除整个硬盘或分区。在意识到它们会做什么之前,不要简单地将下面的示例复制并粘贴到您的 Linux 终端中。
Linux 中的 dd 命令基本示例
dd 命令最常见的应用之一是备份硬盘。我们可以使用dd命令结合
if
和of
命令行选项将一个硬盘复制到另一个硬盘。例如,如果我们有一个硬盘/dev/sda
并希望将其复制到/dev/sdb
中的硬盘,我们将使用以下语法。$ dd if=/dev/sda of=/dev/sdb
在上面的例子中,
if
选项代表“输入文件”,of
选项代表“输出文件”我们还可以使用dd命令来备份分区。分区是您的硬盘驱动器可以分为多个部分的部分,每个部分都充当自己的硬盘驱动器。例如,我们可以使用 dd 命令以及
if
和of
命令行选项来返回MBR
。MBR
或主引导记录位于 Linux 系统的第一个扇区。这意味着我们可以使用下面的语法来备份主引导记录。$ sudo dd if=/dev/sda of=/backup/mbr.img bs=512 count=1
在上面的屏幕截图中,我们使用 sudo 命令来获取访问
/dev/sda
所需的权限。然后,我们使用if
选项指定/dev/sda
块设备作为输入,并使用of
选项指定mbr。 img
作为输出。我们还使用了 bs 和count
命令行选项。 bs 选项允许我们告诉 dd 在给定时间应该读取多少数据。我们上面提到的第一个扇区(主引导记录所在)的数据长度是512字节。count
选项用于指定 dd 命令应读取的块数,在我们的示例中为 1。我们还可以使用dd命令来管理转化;我们可以将文件中的所有字符从小写转换为大写。 dd 通过创建原始文本的新副本将文本转换为全部大写。例如,如果我们有一个列出各种命令的文本文件,我们可以创建该文件的副本并使用以下语法将数据转换为全部大写。
$ dd if=commands.txt of=commands.caps conv=ucase
将文本文件中的字符转换为小写而不是大写的语法与必须使用
conv=lcase
而不是conv=ucase
的部分完全相同,就像我们上面所做的那样。我们还可以使用dd命令来擦除数据。例如,可以使用dd通过用空字符或零覆盖磁盘来完全擦除硬盘。
$ sudo dd if=/dev/zero bs=5m of=/dev/sda
该命令完成所需的时间取决于块设备的大小和类型。
Linux 中使用 dd 命令进行的转换可用于输入文件与系统的字符格式不同的情况。例如,如果您的 Linux 系统使用 ASCII 格式的字符串,但输入文件设置为不同的格式,则可以使用以下语法进行转换。
$ dd if=file.ebcdic of=file.ascii conv=ascii
注意
您始终可以使用 man 命令来阅读有关 dd 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
结束语
在本教程中,我们了解了 Linux 上的 dd 命令。对于经常在Linux系统上管理文件和块设备的用户和管理员来说,掌握dd命令是必不可少的。