文章目录
如果你需要给硬盘做完整备份,或者把一个分区的内容原封不动地复制到另一个分区,dd 命令绝对是你的得力助手。它被称为”数据复制机”,能按字节级精确复制数据,小到分区备份,大到整盘克隆都能搞定。今天就用最简单的方式,带你掌握 dd 命令的核心用法。
什么是 dd 命令?
dd 是 Linux 系统中一个强大的底层命令,全称可以理解为”数据复制器”(data duplicator)。它的工作原理很简单:从一个地方读取数据,原封不动地写到另一个地方,不关心数据是什么格式(文件、分区、甚至整个硬盘)。
比如你可以用它:
- 把一个分区的所有内容备份成镜像文件
- 把镜像文件恢复到另一个分区
- 直接克隆一个硬盘到另一个硬盘(包括启动信息)
- 备份硬盘的启动扇区(MBR)
dd 命令的核心语法
dd 命令的基本格式就像”从 A 复制到 B”:
if:输入文件(input file),即数据的来源(可以是分区、硬盘、镜像文件)of:输出文件(output file),即数据的目的地(可以是分区、硬盘、镜像文件)- 其他参数:比如
bs(每次读写的字节数)、count(读取的次数),用于控制复制的细节
实战:5 个最常用的 dd 备份场景
1. 备份一个分区到镜像文件
比如要把 /dev/sdb1 这个分区(可以通过 lsblk 命令查看分区名)备份成一个镜像文件 sdb1.img,存到 /backup 目录:
dd if=/dev/sdb1 of=/backup/sdb1.img
- 执行后,
dd会把/dev/sdb1里的所有数据(包括文件、分区表信息)原封不动地复制到sdb1.img中。 - 终端会显示复制的进度(多少字节被复制,速度多少),耐心等待完成即可。
2. 把备份的镜像恢复到另一个分区
如果要把 sdb1.img 恢复到 /dev/sdb2 这个分区(注意:/dev/sdb2 要为空,且大小不小于原分区):
dd if=/backup/sdb1.img of=/dev/sdb2
- 恢复完成后,
/dev/sdb2的内容会和原来的/dev/sdb1完全一样,就像”复制粘贴”了整个分区。
3. 直接克隆一个分区到另一个分区
如果不需要中间镜像文件,想直接把 /dev/sdb1 的内容复制到 /dev/sdb2(适合快速克隆):
dd if=/dev/sdb1 of=/dev/sdb2
- 这种方式跳过了生成镜像文件的步骤,直接在两个分区之间复制数据,速度更快。
- 注意:目标分区
/dev/sdb2会被完全覆盖,一定要确认目标分区正确!
4. 克隆整个硬盘(包括启动功能)
如果要把旧硬盘 /dev/sda 完整克隆到新硬盘 /dev/sdb(比如换硬盘时迁移系统),需要两步:
第一步:复制启动扇区(MBR)
硬盘的前 446 字节是启动引导程序(MBR),决定了电脑能否从硬盘启动,必须先复制:
bs=446:每次读写 446 字节count=1:只读取 1 次,也就是总共复制 446 字节
dd if=/dev/sda of=/dev/sdb bs=446 count=1
第二步:复制所有分区
确保新硬盘 /dev/sdb 的分区结构和旧硬盘一致(可以用 fdisk 或 gparted 调整),然后逐个复制分区:
- 完成后,新硬盘
/dev/sdb就能像旧硬盘一样启动和使用了。
dd if=/dev/sda1 of=/dev/sdb1 # 复制第一个分区
dd if=/dev/sda2 of=/dev/sdb2 # 复制第二个分区
5. 备份和恢复硬盘的 MBR
MBR(主引导记录)是硬盘启动的关键,万一损坏会导致无法开机,建议备份:
# 备份 /dev/sda 的 MBR 到文件(MBR 共 512 字节)
dd if=/dev/sda of=/backup/backup-mbr-sda.img bs=512 count=1
如果需要恢复 MBR 到另一个硬盘 /dev/sdb,只需恢复前 446 字节(后面的分区表可能不需要覆盖):
dd if=/backup/backup-mbr-sda.img of=/dev/sdb bs=446 count=1
注意事项:这些坑一定要避开
- 确认分区/硬盘名:用
lsblk或fdisk -l确认if和of的路径(比如/dev/sda和/dev/sdb),输错可能会覆盖重要数据! - 目标分区要足够大:恢复或克隆时,目标分区/硬盘的容量不能小于源分区/硬盘,否则数据会被截断损坏。
- 操作时别碰源数据:备份或克隆过程中,不要对源分区(比如
/dev/sdb1)进行读写操作(如复制文件、删除内容),否则可能导致数据不一致。 - 需要 root 权限:所有
dd操作都需要管理员权限,记得在命令前加sudo。 - 耐心等待:
dd命令没有进度条(可以用pkill -USR1 dd在另一个终端查看进度),大分区可能需要几十分钟,别强行中断。
总结:dd 命令的”复制粘贴”哲学
dd 命令的强大之处在于它的”底层复制”能力——不关心文件系统,不关心数据类型,只按字节精确复制,因此适合做完整备份和克隆。记住几个核心用法:
| 需求 | 命令 |
|---|---|
| 分区备份到镜像 | dd if=/dev/sdb1 of=/backup/sdb1.img |
| 镜像恢复到分区 | dd if=/backup/sdb1.img of=/dev/sdb2 |
| 直接克隆分区 | dd if=/dev/sdb1 of=/dev/sdb2 |
| 克隆硬盘(含启动) | 先复制 MBR,再复制分区 |
https://www.88531.cn/?p=47065
创作不易,用心坚持,请喝一怀爱心咖啡!继续坚持创作~~
