dd
命令是一个功能强大的工具,广泛用于Unix/Linux系统中进行低级的数据复制和转换。它可以用来备份整个磁盘、创建启动盘、复制文件系统等。本文将详细介绍 dd
命令的用法、选项以及一些常见的使用场景。
dd
命令的基本格式如下:
dd [选项]
其中常用的选项包括:
if=文件名
:指定输入文件(input file),默认为标准输入。of=文件名
:指定输出文件(output file),默认为标准输出。bs=字节数
:同时设置读取和写入的块大小(block size)。count=块数
:指定要复制的块数量。skip=块数
:在开始复制之前,跳过输入文件中的若干块。seek=块数
:在开始写入之前,跳过输出文件中的若干块。假设我们有一个硬盘 /dev/sda
,想要将其完整地备份到一个镜像文件 disk.img
中,可以使用以下命令:
sudo dd if=/dev/sda of=disk.img bs=4M
这里:
if=/dev/sda
表示从 /dev/sda
读取数据。of=disk.img
表示将数据写入到 disk.img
文件中。bs=4M
设置了每次读写的块大小为4MB,这样可以提高效率。如果需要将上面生成的镜像文件恢复到另一个硬盘 /dev/sdb
上,可以使用以下命令:
sudo dd if=disk.img of=/dev/sdb bs=4M
假如你有一个ISO文件 ubuntu.iso
,想将其写入到USB设备 /dev/sdc
上以制作一个可引导的USB盘,可以执行以下命令:
sudo dd if=ubuntu.iso of=/dev/sdc bs=4M && sync
注意:在执行此命令前,请确保正确识别了USB设备的路径,以免误操作导致重要数据丢失。
通过向一个临时文件写入大量随机数据,我们可以测试硬盘的写入速度:
dd if=/dev/zero of=testfile bs=1G count=1
这条命令会生成一个1GB大小的全零文件 testfile
,从而帮助我们了解硬盘的写入性能。
dd
命令非常强大但也极其危险,特别是当你错误地指定了输入或输出设备时,可能会导致数据丢失。sudo
。lsblk
或 fdisk -l
查看当前系统的磁盘和分区信息。除了上述基本用法外,dd
还可以结合其他工具完成更多任务,例如与 gzip
结合压缩镜像文件,或者利用管道符实时监控进度等。
# 压缩镜像文件
dd if=/dev/sda bs=4M | gzip > disk.img.gz
# 实时显示进度
dd if=/dev/sda of=disk.img bs=4M status=progress