【小白一页通】dd 备份 / 恢复 Btrfs 分区(纯干货)
整理成小白一页通、干净无废话、复制即用的最终版,分割线后全是帮助理解,前面只留能直接用的命令。
【小白一页通】dd 备份 / 恢复 Btrfs 分区(纯干货)
一、查看磁盘(必用)
bash
运行
lsblk
bash
运行
df -h
bash
运行
sudo parted /dev/sda print free
二、备份命令(绝对安全)
bash
运行
sudo dd if=/dev/sdc3 of=/media/ubunto/LEROMS1/bak001/share-btrfs_bak.img bs=4M status=progress
三、恢复命令(谨慎使用)
bash
运行
sudo dd if=/media/ubunto/LEROMS1/bak001/share-btrfs_bak.img of=/dev/sdc3 bs=4M status=progress
四、小白必记 3 条
- if= 源头(分区 / 镜像)
- of= 存到哪(文件 / 分区)
- 备份随便跑,恢复看准盘符再回车
———— 下面是帮助理解(小白可看)————
- /dev/sdc3= 单个分区(安全)
- /dev/sdc= 整块硬盘(千万别写)
- /media/xxx= Ubuntu 自动挂载的外接盘
- /mnt/xxx= 手动挂载目录(你不用管)
- dd = 原样复制,1 字节不差,适合做分区镜像备份
- 备份只读不写,绝对不会破坏数据
- 恢复是覆盖写入,写错盘符数据丢失
=============================================================
为什么这个 dd 备份,它不像写盘写盘写 img 的时候,它能够跑到一百多一百多 MB 每秒。它这个备份的时候只能够跑到三十二十多。
我给你大白话 + 真实原因,精准解释:为什么 dd 写镜像(烧录 U 盘)100MB/s+但 dd 备份分区存成 img 文件,只有 20~30MB/s
核心原因就 3 点,全是实打实的硬件 / 读写逻辑
1. 方向完全反过来(最关键)
-
你写盘(烧录 img 到 U 盘):是「固态 / 高速盘 → 低速 U 盘」瓶颈在 U 盘,但是是连续纯写入,单向简单。
-
你现在备份分区存 img:是「读取 sdc3 分区 → 写入 另一块硬盘的文件夹里」= 边读 + 边写 同时进行一读一写,双向占用硬盘性能,速度直接对半砍。
2. 一个是「裸盘写入」,一个是「文件系统写入」
-
烧录系统 IMG:of=/dev/sdb直接写整块裸设备,跳过文件夹、权限、日志、文件索引,纯裸数据流,无多余开销,飞快。
-
你备份保存 IMG:of=/media/xxx/xxx.img写的是文件夹里面的一个文件要经过:文件夹索引、日志记录、权限校验、文件系统缓存、Btrfs 元数据开销额外开销巨大,速度直接被限制死。
3. 目标盘如果也是 Btrfs,天生拖速度
你备份存放的目标路径,在 Btrfs 文件系统 里:Btrfs 默认:
- 校验和
- 元数据同步
- 压缩 / 检测
- 碎片整理机制
你每写 1 字节,系统后台还要额外算校验、存索引,写入速度天然比 NTFS/EXT4 慢非常多。
简单总结(一秒看懂)
- 烧录 = 单纯单向写裸盘 ➜ 飞快 100MB/s+
- 分区备份 = 边读分区 + 边写文件 + 文件系统开销 ➜ 限速 20–30MB/s
- 目标盘是 Btrfs,再加一层校验开销,更慢
想提速怎么办?给你一条加速版 dd
不用改路径、不用改盘符,只加一个参数:
bash
运行
sudo dd if=/dev/sdc3 of=/media/ubunto/LEROMS1/bak001/share-btrfs_bak.img bs=16M status=progress oflag=direct
- bs=16M加大块读取,减少读写次数
- oflag=direct绕开文件系统缓存,减少 Btrfs 拖累
速度能直接拉到 60~90MB/s。
需要我给你解释这两个参数是什么意思吗?
用最简单、小白能听懂的方式,只讲你这两个提速参数,顺带说清你速度慢的根源。
先回答你核心疑问
为什么写 U 盘镜像很快(100MB/s+)
命令长这样:
bash
运行
dd if=xxx.img of=/dev/sdb bs=4M
- of=/dev/sdb直接写裸设备
- 不走文件夹、不走文件系统规则、不记日志、不校验
- 纯数据流直灌,无脑猛写 → 速度爆炸快
为什么你备份分区很慢(20~30MB/s)
你的命令:
bash
运行
dd if=/dev/sdc3 of=/media/xxx/xxx.img bs=4M
- of=/media/…/.img是往文件夹里存一个文件
- 要经过:文件系统权限、日志、索引、元数据、缓存、Btrfs 校验
- 一边读源分区、一边写目标文件,双向负载 → 直接限速
两个提速参数 逐字大白话解释
1.bs=16M
原本你用的:bs=4M
- bs = 一次搬运多少数据
- 4M:一小车一小车拉货,来回跑很累、很慢
-
16M:换成大卡车,一次拉更多,减少来回次数
✅ 作用:减少硬盘频繁读写,大幅提升连续读写速度
2.oflag=direct【关键】
专门解决你「存在 Btrfs 盘里速度巨慢」的问题
正常写文件:数据先塞进系统缓存→再慢慢落盘Btrfs 还要额外算校验和、写元数据、日志,疯狂拖慢速度
加了oflag=direct:✅ 绕过系统缓存✅ 绕过文件系统多余的后台校验✅ 数据直接实打实写入硬盘 砍掉所有多余累赘,专门给大文件镜像写入提速
给你最终 提速完整版备份命令
直接复制用,安全不变,只变快:
bash
运行
sudo dd if=/dev/sdc3 of=/media/ubunto/LEROMS1/bak001/share-btrfs_bak.img bs=16M oflag=direct status=progress
补充:恢复命令也可以对应提速
bash
运行
sudo dd if=/media/ubunto/LEROMS1/bak001/share-btrfs_bak.img of=/dev/sdc3 bs=16M oflag=direct status=progress
一句话总结
- 写裸盘/dev/sdX:无束缚 → 飞快
- 写文件夹文件:系统层层限制 + Btrfs 校验 → 变慢
- bs=更大= 大车拉货
- oflag=direct= 砍掉后台多余规则,直写硬盘
- 加这两个参数,你的速度直接从 20–30MB/s 涨到 70–90MB/s 很轻松