一、dd 命令简介
dd
命令是一个在 Unix 和类 Unix 系统中用于复制文件和转换文件的命令行工具。它的功能非常强大,可以用于各种目的,例如创建镜像文件、备份和恢复数据、复制数据等。
dd
是一个用于读取、转换和写入数据的工具,通常用于块设备级别的操作,比如复制整个磁盘或分区,或者处理单个文件。它不识别文件系统结构,因此不能用来复制目录树或文件夹。
二、dd 命令参数
dd if=<输入文件> of=<输出文件> [bs=<块大小>] [count=<块数量>] [conv=<转换选项>] [status=<进度显示>]
常用选项
-
if=input_file
:指定输入文件。 -
of=output_file
:指定输出文件。 -
bs=block_size
:指定块大小。默认512kB。 -
count=blocks
:指定要复制的块数。 -
status=progress
:显示复制进度。 -
seek=blocks
:在输出文件中跳过指定块数。 -
skip=blocks
:在输入文件中跳过指定块数。
三、dd 命令示例
示例1:dd命令复制文件
dd if=输入文件 of=输出文件
例如
soulio@ubuntu:~/命令大全/dd$ dd if=test_file of=new_file
819200+0 records in
819200+0 records out
419430400 bytes (419 MB, 400 MiB) copied, 2.55206 s, 164 MB/s
示例2:dd命令测试硬盘读写速度
dd if=输入文件 of=输出文件 [块大小] [块数量]
例如,
测试硬盘写入速度
soulio@ubuntu:~/命令大全/dd$ dd if=/dev/zero of=test_file bs=4M count=100
100+0 records in
100+0 records out
419430400 bytes (419 MB, 400 MiB) copied, 0.313331 s, 1.3 GB/s
测试硬盘读取速度
soulio@ubuntu:~/命令大全/dd$ dd if=test_file of=/dev/null
819200+0 records in
819200+0 records out
419430400 bytes (419 MB, 400 MiB) copied, 1.53856 s, 273 MB/s
示例3:dd命令显示进度
dd if=input_file of=output_file status=progress
例如
dd if=/dev/zero of=大测试文件 bs=4M count=1000 status=progress
示例4:dd命令写入系统镜像
把一个系统镜像写入U盘(也可以是移动硬盘)
sudo dd if=镜像目录 of=U盘目录
例如:ubuntu22.04镜像写入一个U盘(移动硬盘)
$ dd if=debian-12.6.0-amd64-netinst.iso of=/dev/sdc status=progress
659137024 bytes (659 MB, 629 MiB) copied, 292 s, 2.3 MB/s
1292288+0 records in
1292288+0 records out
661651456 bytes (662 MB, 631 MiB) copied, 303.586 s, 2.2 MB/s
现在可以用这个U盘给电脑安装系统。
示例5:dd命令其他用法
-
备份磁盘或分区:
复制dd if=/dev/sda1 of=/path/to/backup.img bs=4M
这会备份
/dev/sda1
分区到/path/to/backup.img
文件,使用4MB的块大小。 -
格式化USB驱动器:
复制dd if=/dev/zero of=/dev/sdb bs=512 count=1
注意:这将擦除USB驱动器上的所有数据,请谨慎操作。
-
从备份文件恢复磁盘或分区:
复制dd if=/path/to/backup.img of=/dev/sda1 bs=4M
将备份的映像恢复到
/dev/sda1
分区。 -
复制光盘到ISO文件:
复制dd if=/dev/cdrom of=/path/to/cdrom.iso bs=4M
注意事项
- 使用
dd
命令时要格外小心,因为它具有强大的功能,但也很容易导致数据丢失或文件覆盖。 - 确保在执行命令之前仔细检查命令参数,避免意外的数据损坏。
-
dd
命令默认情况下不会显示进度,如果要监控进度,可以使用status=progress
选项。