Btrfs快照的核心是秒级创建一致性文件系统视图,而非完整备份;需根分区为Btrfs、合理规划子卷(如@、@home、@snapshots),再用btrfs subvolume snapshot -r命令生成只读快照。

用 Btrfs 快照做系统备份,核心不是“秒级备份整个系统”,而是“秒级创建一个只读(或可写)的一致性文件系统视图”。真正的完整备份仍需后续复制快照内容。但快照本身确实毫秒级完成,是高效备份链的起点。
前提:确保根文件系统使用 Btrfs
快照只能在 Btrfs 文件系统内跨子卷(subvolume)操作。确认你的 / 或关键分区是 Btrfs:
lsblk -f | grep btrfs
若不是,需重装系统或迁移数据——快照机制无法作用于 ext4、XFS 等其他文件系统。
规划子卷结构:快照依赖清晰的层级
Btrfs 快照本质是子卷间的克隆(COW),所以必须提前组织好子卷。典型推荐结构:
-
@—— 根子卷(挂载到/) -
@home—— 家目录子卷(挂载到/home) -
@snapshots—— 专用于存放快照的子卷(挂载到/.snapshots或类似路径)
未按子卷分离的系统(如所有数据挤在 @ 下),快照虽能建,但恢复粒度差、无法排除缓存/日志等临时数据。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
创建只读快照:真正“秒级”的一步
假设你已按上述结构配置,并以 root 身份操作:
btrfs subvolume snapshot -r /@ /.snapshots/root_$(date +%Y%m%d_%H%M%S)
这条命令耗时通常
-
-r表示只读快照,防止误改,适合备份用途 - 快照名带时间戳,便于识别和脚本清理
- 快照必须创建在同一个 Btrfs 文件系统内(如
/.snapshots必须是同一块设备上的子卷)
让快照真正可用:配合 rsync 或 send/receive 做离线保存
快照还在原盘上,断电或磁盘损坏就全丢。安全备份需导出:
-
本地冗余(推荐初学者):用
rsync -aHAX --delete将快照目录同步到另一块物理硬盘(如/backup/root_20240501_120000) -
跨机/远程备份(高效省空间):用
btrfs send流式传输快照,配合btrfs receive写入远端 Btrfs 分区。支持增量:btrfs send -p 前一个快照 新快照 | ssh user@backup "btrfs receive /backup"
注意:send/receive 要求源与目标都是 Btrfs,且接收端需有足够空间容纳解包后的数据(非快照大小)。
自动清理旧快照:避免占满空间
快照不自动释放空间,删除快照后 COW 数据才被回收。建议保留最近 7 天 + 最近 4 个周快照:
find /.snapshots -maxdepth 1 -name 'root_*' -type d -mtime +7 -delete
也可用 btrfs subvolume list -o 结合 awk 按创建时间排序后裁剪,更精准控制数量。

















