孙亮亮
返回 NAS 系统

NAS 系统

NAS 快照实战:用 Btrfs 子卷快照挡住误删和勒索,5 分钟回滚

2026年8月28日

备份防硬盘坏,快照防误删:手把手用 Btrfs 做秒级回滚

NAS快照Btrfs数据备份误删恢复

NAS 快照实战:用 Btrfs 子卷快照挡住误删和勒索,5 分钟回滚

摘要:备份防的是硬盘坏了,快照防的是手滑删错。本文以飞牛、群晖等主流 NAS 为例,手把手用 Btrfs 子卷快照做秒级回滚,并给出定时快照、单文件恢复与空间监控的完整做法,守住数据安全最后一道防线。

一、先说清:快照和备份不是一回事

很多人以为"我开了同步备份就安全了",但备份解决的是硬盘损坏、整机丢失这类灾难;而日常最高频的风险其实是另外两种:

  • 手滑:在文件管理器里多选了几个文件夹,一键删掉,回收站还被顺手清空;
  • 勒索:某天一台电脑中了病毒,把挂载的 NAS 共享盘整盘加密。

这两类"逻辑错误"会原样同步到备份里,备份救不了你。快照(Snapshot)则是文件系统层面的"时间切片",创建几乎零成本、秒级完成,回滚也只是换个指针。它和备份互补,谁也替代不了谁。

二、确认你的存储池是 Btrfs

不是所有 NAS 文件系统都支持快照。先确认底层格式:

# 在 NAS 的 SSH 终端里执行
df -T /volume1 | tail -n 1
# 输出含 btrfs 即支持;ext4 不支持原生快照

飞牛 NAS、群晖(创建存储池时选 Btrfs)、威联通(用高级文件夹 QuDedup 另算)大多默认 Btrfs。如果是 ext4 池,本文方法不适用,建议新建 Btrfs 池后迁移。

三、手动创建第一个快照

Btrfs 的子卷(subvolume)才能做快照。先看看哪些目录是子卷:

btrfs subvolume list /volume1

假设我们要保护"共享文件夹/重要资料",它对应子卷 /volume1/重要资料。创建快照:

# 在存储池根下建一个专门放快照的目录
mkdir -p /volume1/.snapshots
# 创建只读快照,名称带时间戳
btrfs subvolume snapshot -r /volume1/重要资料 /volume1/.snapshots/重要资料_20260828

-r 表示只读快照,更安全。一条命令几秒钟,不论数据多大都不拷贝实体文件,只记录差异指针,所以几乎不占空间。

四、误删之后:5 分钟回滚

假设刚才手滑把"重要资料"清空了:

# 1. 先把被污染的子卷改名(保留现场)
mv /volume1/重要资料 /volume1/重要资料_损坏
# 2. 用快照原地恢复
btrfs subvolume snapshot /volume1/.snapshots/重要资料_20260828 /volume1/重要资料
# 3. 确认无误后删掉损坏子卷
btrfs subvolume delete /volume1/重要资料_损坏

注意第 2 步用的是 snapshot(不是 -r),把只读快照"另存为"成一个可写子卷。整个过程只动指针,TB 级数据也能分钟级完成,比从备份慢慢拉取快得多。

五、日常最常用:从快照里只救单个文件

整卷回滚动作大,多数时候你只想找回误删的某个 PPT。因为快照是只读子卷,它就在文件系统里真实存在:

# 快照目录本身就能像普通文件夹一样浏览
ls /volume1/.snapshots/重要资料_20260828/季度汇报.pptx
# 直接拷贝出来即可,不影响线上数据
cp /volume1/.snapshots/重要资料_20260828/季度汇报.pptx /volume1/重要资料/

很多 NAS 的图形界面会把 .snapshots 藏起来,SSH 里它一直都在。建议把快照根目录权限设为仅管理员可读,防止家人误进误删。

六、别天天手敲:定时快照脚本

手动不适合长期用,写成脚本交给计划任务。下面这段保留"最近 7 天每天一个"的每日快照:

#!/bin/bash
POOL=/volume1
SNAP=$POOL/.snapshots
SRC=重要资料
TS=$(date +%Y%m%d)
btrfs subvolume snapshot -r $POOL/$SRC $SNAP/${SRC}_$TS
# 删除 7 天前的每日快照
find $SNAP -name "${SRC}_20*" -mtime +7 -exec btrfs subvolume delete {} \;

把脚本放到 /volume1/.scripts/snap.sh,在群晖或飞牛的任务计划里加一条每天凌晨 3 点执行即可。快照本身按差异存储,保留十几份也只占增量空间。

七、快照到底占了多少空间

别凭感觉。用这条命令看快照目录的真实占用:

btrfs filesystem du -s /volume1/.snapshots

输出里 Exclusive 是快照独占、不被源数据引用的部分,这才是真正多占的空间。只要文件不被频繁改写,十几份每日快照的独占空间往往只有几百 MB。

八、快照不是银弹:三个注意点

  1. 快照救不了物理损坏:硬盘整体挂掉,快照和源数据一起没。快照加异地备份(3-2-1)才是完整方案。
  2. 勒索病毒会删快照:若 NAS 账号被攻破且拥有管理员权限,攻击者可以 btrfs subvolume delete 删光快照。务必开启快照只读锁定或异地不可删备份(如对象存储的合规保留)。
  3. 空间会被悄悄吃满:大文件频繁改写会让快照差异累积,记得设保留上限并监控存储池使用率。

小结

快照是性价比最高的"后悔药":秒级创建、分钟级回滚、几乎不占空间,专治误删和逻辑错误。把它和异地备份配合好,家庭和小企业数据才真正稳。

本模块其他文章

NAS 快照实战:用 Btrfs 子卷快照挡住误删和勒索,5 分钟回滚 · 孙亮亮