如何在 Linux 中使用 dd 命令 [15 个有用的示例]如何在 Linux 中使用 dd 命令 [15 个有用的示例]如何在 Linux 中使用 dd 命令 [15 个有用的示例]如何在 Linux 中使用 dd 命令 [15 个有用的示例]
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中使用 dd 命令 [15 个有用的示例]

简介:在本高级指南中,我们将讨论 dd 命令的一些实际示例。遵循本指南后,高级用户将能够从命令行界面舒适地使用块设备。

在 Linux 中,可启动的 USB 驱动器,等等。

当然,我们可以使用图形工具来执行所有这些操作。但是,大多数 Linux 管理员更喜欢使用 dd 命令,因为它具有丰富的功能和稳健性。

在本高级指南中,我们将了解用于转换和复制文件的 dd 命令。然而,与 cp 命令不同的是,它大多数时候与块设备一起使用。

在本指南中,首先,我们将通过基本示例了解 dd 命令 的用法,然后我们将讨论一些高级用例。

让我们开始吧。

dd 命令语法

dd 命令 最常用的语法如下:

$ dd [if=] [of=]

在上面的语法中:

  • if – 表示输入或源文件。
  • of – 代表输出或目标文件。

1. 如何在 Linux 中复制文件

dd 命令 的基本用途之一是将文件复制到当前目录。让我们通过创建一个简单的文本文件来理解:

$ echo "this is a sample text file" > file-1.txt

现在,让我们使用 dd 命令 创建它的副本:

$ dd if=file-1.txt of=file-2.txt

在此示例中,if 参数表示源文件,而 of 参数表示目标文件。

是不是和cp命令一模一样?那么dd命令有什么特别之处呢?

dd 命令 比常规的 cp 命令 强大得多。本教程的后面部分讨论了它的一些高级用例。

2. 如何将文本从小写转换为大写

dd 命令 允许我们执行大小写转换。为此,我们可以使用 conv 参数。

要理解这一点,首先,显示 file-1.txt 文件的内容:

$ cat file-1.txt

this is a sample text file

现在,让我们使用以下命令将文件内容转换为大写:

$ dd if=file-1.txt of=upper-case.txt conv=ucase

在此示例中,conv=ucase 选项用于将小写字母转换为大写字母。

最后,验证新建文件的内容:

$ cat upper-case.txt

THIS IS A SAMPLE TEXT FILE

3. 如何将文本从大写转换为小写

类似的,我们可以使用dd命令将大写字母转换为小写字母:

让我们使用 conv=lcase 选项将大写字母转换为小写字母:

$ dd if=upper-case.txt of=lower-case.txt conv=lcase

现在,让我们显示新创建文件的内容并验证转换是否正确完成:

$ cat lower-case.txt

this is a sample text file

4. 避免在 Linux 中覆盖目标文件

默认情况下,dd 命令 会替换目标文件,这意味着如果目标文件中存在同名文件,它将覆盖该文件。

但是,我们可以使用 conv=excl 选项禁用此默认行为,如图所示。

$ dd if=file-1.txt of=file-2.txt conv=excl

dd: failed to open ‘file-2.txt’ File exists

在这里,我们可以看到 dd 命令 已中止操作,因为目标位置存在同名文件。

5. 使用 dd 命令在文件中追加数据

有时,我们希望以附加方式更新文件,这意味着新内容应该添加到目标文件的末尾。

我们可以通过组合这两个标志来实现这一点——oflag=append 和 conv=notrunc。此处,oflag 表示输出标志,而 notrunc 选项用于禁用目标处的截断。

为了理解这一点,首先,让我们创建一个新的文本文件:

$ echo "append example demo" > dest.txt

接下来,让我们使用以下命令将内容附加到 dest.txt 文件:

$ dd if=file-1.txt of=dest.txt oflag=append conv=notrunc

现在,让我们检查一下 dest.txt 文件的内容:

$ cat dest.txt 

append example demo
this is a sample text file

6. 读取输入文件时跳过字节或字符

我们可以指示 dd 命令 在使用 ibs 和 skip 选项读取输入文件时跳过前几个字符。

首先,让我们显示file-1.txt 文件的内容:

$ cat file-1.txt

this is a sample text file

接下来,让我们使用以下命令跳过前 8 个字符:

$ dd if=file-1.txt of=file-2.txt ibs=8 skip=1

现在,让我们验证 file-2.txt 文件的内容:

$ cat file-2.txt

a sample text file

在上面的输出中,我们可以看到该命令跳过了前 8 个字符。

7.使用dd命令备份Linux磁盘分区

到目前为止,我们讨论了不需要 root 访问权限的 dd 命令 的基本示例。现在,让我们看看一些高级用例。

和文件一样,我们可以使用dd命令对磁盘分区进行备份。例如,以下命令将 /dev/sda1 分区备份到 partition-bkp.img:

$ sudo dd if=/dev/sda1 of=partition-bkp.img

8.使用dd命令恢复Linux磁盘分区

在前面的例子中,我们将/dev/sda1分区备份到partition-bkp.img文件中。

现在,让我们使用以下命令将其恢复到 /dev/sdb1 分区:

$ sudo dd if=partition-bkp.img of=/dev/sdb1

请务必注意,目标分区的大小必须等于或大于备份大小。

9. 使用 dd 命令备份整个 Linux 硬盘

磁盘驱动器可以有多个分区。因此,随着分区数量的增加,对每个分区进行备份和恢复备份会变得非常耗时。为了克服这个限制,我们可以像备份分区一样备份整个磁盘驱动器。

因此,让我们使用以下命令备份 /dev/sda 磁盘:

$ sudo dd if=/dev/sda of=disk-bkp.img

上面的命令备份整个磁盘,包括它的分区。

10.使用dd命令恢复Linux硬盘

就像分区一样,我们可以恢复整个磁盘的备份。在前面的示例中,我们将整个磁盘备份到 disk-bkp.img 文件。现在,让我们使用相同的方法将其还原到/dev/sdb 磁盘上。

首先,我们删除/dev/sdb磁盘的所有分区,并确认所有分区都已删除:

$ lsblk /dev/sdb

接下来,让我们使用以下命令恢复 /dev/sdb 驱动器上的备份:

$ sudo dd if=disk-bkp.img of=/dev/sdb

最后,确认分区已经创建在/dev/sdb磁盘上:

$ lsblk /dev/sdb

11.使用dd命令备份主引导记录

主引导记录 (MBR) 位于引导盘的第一个扇区。它存储有关磁盘分区的信息。我们可以使用如下所示的 dd 命令 来取回它:

$ sudo dd if=/dev/sda of=mbr.img bs=512 count=1

上面的命令取回前 512 个字节,即一个扇区。

需要注意的是,以上命令必须在启动盘上执行。

12.使用dd命令恢复主引导记录

在前面的示例中,我们备份了主引导记录 (MBR)。现在,让我们使用以下命令将其恢复到 /dev/sdb 磁盘:

$ sudo dd if=mbr.img of=/dev/sdb

13. 使用 dd 命令复制 CD/DVD 驱动器内容

与分区和磁盘类似,我们可以使用 dd 命令从 CD 或 DVD 驱动器中复制内容。所以让我们使用下面的命令来做同样的事情:

$ sudo dd if=/dev/cdrom of=alma-minimal.iso

在 Linux 中,CD/DVD 驱动器由 /dev/cdrom 设备表示。因此我们将其用作源文件。

现在,让我们通过验证其校验和命令来验证内容是否已成功复制:

$ sha256sum alma-minimal.is

14. 使用 dd 命令创建可启动 USB 驱动器

在前面的示例中,我们创建了 Alma Linux 的 iso 映像。现在让我们用它来创建一个可引导的 USB 驱动器:

$ sudo dd if=alma-minimal.iso of=/dev/sdb

需要注意的是,上述命令必须使用正确的 U 盘执行。

15.如何显示进度条

默认情况下,dd 命令 在执行复制操作时不显示进度。但是,我们可以使用 status 选项覆盖此默认行为。

因此,让我们使用 status=progress 选项和 dd 命令 来显示进度条:

$ sudo dd if=alma-minimal.iso of=/dev/sdb status=progress
结论

在本文中,我们讨论了 dd 命令 的一些实际示例。高级用户可以在日常生活中使用 Linux 系统时参考这些示例。但是,我们在执行这些命令时必须非常小心。因为一个小错误就可以覆盖整个磁盘的内容。

您知道 Linux 中 dd 命令的其他最佳示例吗?在下面的评论中让我们知道您的观点。

©2015-2025 艾丽卡 support@alaica.com