如何在 Linux 中使用 dd 命令 ?

在 Linux 世界中,dd 命令是一个强大而灵活的工具,最初设计为底层数据操作工具,dd 已经广泛的应用在与数据管理相关各种任务中,例如:复制、转换和写入数据到不同的存储介质。它处理原始块级别数据的能力使其成为处理磁盘映像、恢复数据、性能测试的首选解决方案。

在本文中,我们将深入研究 Linux 中 dd 命令的 15 个实际示例,帮助您快速掌握 dd 命令。

1. Copying a file

dd 命令可以用于复制文件,就像 cp 命令一样,从输入文件中读取数据 (if) 并将其写入输出文件 (of)

复制代码
dd if=input.txt of=output.txt

输入结果如下:

复制代码
10+0 records in
10+0 records out
5120 bytes (5.1 kB, 5.0 KiB) copied, 0.000939 s, 5.4 MB/s

2. Creating a disk image

你可以使用 dd 命令创建一个完整的磁盘或分区镜像。这对备份非常有用,因为它备份了整个磁盘或分区,包括其结构和内容。

复制代码
dd if=/dev/sda of=/path/to/backup/disk_image.img

3. Restoring a disk image

要从镜像中恢复磁盘或分区,使用 dd 命令将镜像文件作为输入目标磁盘或分区作为输出。

复制代码
dd if=disk_image.img of=/dev/sda

4. Creating a bootable USB drive

将 ISO 镜像写入 USB 驱动器以使其可引导,这对于安装新的操作系统非常有用。

复制代码
dd if=linux_distro.iso of=/dev/sdb bs=4M status=progress

5. Securely erasing a disk

使用随机数据覆盖磁盘或分区,保证原有数据无法恢复。这在处理存储设备或准备加密设备时非常有用。

复制代码
dd if=/dev/urandom of=/dev/sda bs=1M status=progress

6. Cloning a disk

将一个磁盘直接克隆到另一个磁盘,这对于升级存储设备、在设备间迁移数据或创建备份非常有用。conv=noerror,sync 选项确保跳过任何读取错误,并同步输出输入数据。

复制代码
dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress

7. Converting uppercase to lowercase

将文本文件内容大写转换为小写。

复制代码
dd if=input.txt of=output.txt conv=lcase

8. Converting lowercase to uppercase

将文本文件内容小写转换为大写。

复制代码
dd if=input.txt of=output.txt conv=ucase

9. Extracting a specific portion of a file

提取文件的前 10 MB,这对于分析大文件特定部件是很有用的。

复制代码
dd if=input_file of=extracted_file bs=1M count=10

10. Creating a fixed-size file filled with zeros

创建一个满是零的 1 GB 文件。这对于在文件系统上分配空间很有用,测试磁盘性能,或生成假数据。

复制代码
dd if=/dev/zero of=1GB_file bs=1G count=1

结果如下:

复制代码
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.17362 s, 914 MB/s

11. Rescuing data from a damaged disk

使用 dd 命令从损坏的磁盘中恢复数据。conv=noerror,sync 选项确保跳过任何读取错误,并同步输出输入。

复制代码
dd if=/dev/sda of=recovered_data.img conv=noerror,sync

12. Benchmarking read performance

通过读取存储设备上的数据,并将其丢弃到 /dev/null,以此衡量存储设备的读性能。这个测试可以帮助您评估存储设备的读取速度。

复制代码
dd if=/dev/sda of=/dev/null bs=1M count=1024

13. Benchmarking write performance

通过向存储设备中写入大量数据来衡量存储设备的写性能。conv=fdatasync 选项确保数据被写入

磁盘命令完成前,提供更准确的写入速度的测量。

复制代码
dd if=/dev/zero of=testfile bs=1M count=1024 conv=fdatasync

14. Converting a file from ASCII to EBCDIC

将文本从 ASCII 编码到 EBCDIC 编码(这是一种在 IBM 大型机和中型系统上使用的编码)

复制代码
dd if=input.txt of=output.txt conv=ebcdic

15. Converting a file from EBCDIC to ASCII

将文本从 EBCDIC 编码到 ASCII 编码

复制代码
dd if=input.txt of=output.txt conv=ascii

我的开源项目

相关推荐
可可嘻嘻大老虎20 小时前
nginx无法访问后端服务问题
运维·nginx
JiMoKuangXiangQu20 小时前
ARM64 进程虚拟地址空间布局
linux·arm64 虚拟地址布局
阳光九叶草LXGZXJ21 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
无忧智库21 小时前
某市“十五五“地下综合管廊智能化运维管理平台建设全案解析:从数字孪生到信创适配的深度实践(WORD)
运维·智慧城市
春日见21 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
珠海西格21 小时前
“主动预防” vs “事后补救”:分布式光伏防逆流技术的代际革命,西格电力给出标准答案
大数据·运维·服务器·分布式·云计算·能源
无垠的广袤1 天前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚1 天前
Kubectl 命令记录
linux·运维·服务器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
Keepalived单播模式配置与实战指南
linux·服务器·负载均衡
IDC02_FEIYA1 天前
Linux文件搜索命令有哪些?Linux常用命令之文件搜索命令find详解
linux·运维·服务器