大家好,我是冯哥的缓存。前几篇我们聊了备份策略、rclone 云同步、BorgBackup 去重加密——它们干的是同一件事:把数据"复制"一份到别处。今天换个思路:
如果只是想把"整个系统的状态"拍个照,崩了能一键回退到昨天,而不是辛辛苦苦从零恢复数据——这时候**快照(Snapshot)**比"备份"更顺手。
一个真实场景:某天手贱apt upgrade把内核搞挂了,开机卡在 emergency mode。如果有快照,重启、选一个昨天的快照,两分钟回到升级前;没有的话,就得 Live USB 救援、chroot、重装引导……半天搭进去了。
本篇就聊一下 Linux 上最普及的系统快照方案:Timeshift(小白友好的图形界面)+Btrfs 原生快照(秒级、近零空间)的组合。
一、快照 ≠ 备份:先把这个坑记牢
很多人以为"有快照就够了",这是危险的误解。两者解决的是不同层面的问题:
维度 | 快照(Snapshot) | 备份(Backup,如 Borg/rclone) |
存的是什么 | 系统当前状态的"照片" | 数据的独立副本 |
通常位置 | 同一块硬盘上 | 另一块盘 / 另一个机器 / 云端 |
对抗硬盘损坏 | ❌ 盘坏了快照一起没 | ✅ 副本在别处,安全 |
对抗误删/升级翻车 | ✅ 一键回退 | ✅ 也能恢复,但慢一些 |
占用空间 | Btrfs 快照近乎零(共享数据块) | 随版本累积,靠去重/Borg 压缩 |
对抗勒索病毒 | ❌ 同盘快照可能被一起加密 | ✅ 异地/只读副本才安全 |
💡提示:一句话记住:快照防"手滑和系统翻车",备份防"硬件坏和灾难"。前面聊的 3-2-1 原则,快照顶多算"第 1 份"(本地同盘),还缺异地和独立介质那两份。更形象点说:快照是硬盘上"当前状态的镜子",备份是硬盘之外"数据的保险箱"——两者不是替代关系,是"快速回滚"与"灾难恢复"的分工。快照是备份的好搭档,不是替代品。
二、Timeshift 是什么
Timeshift 是 Linux 上的"系统还原"工具,类似 Windows 的系统还原点、macOS 的 Time Machine(只还原系统、不动个人文件那部分)。它由 Linux Mint团队维护(原作者是 Tony George,2022 年中因精力有限停止开发、项目移交 Mint 团队并作为 XApp 继续维护),最新稳定版25.12.4(2026 年 4 月发布)。
它的本职工作是:定期给系统文件(/ 根分区,不含 /home 个人文件)拍快照,出事了一键回退。
它有两种工作模式,这是全文最关键的概念:
💡选模式纠结症?拿不准自己是什么文件系统、子卷布局长啥样,直接选 RSYNC——它兼容所有文件系统,不会因为布局不对而报错,最稳。确认根分区是 Btrfs 且是 @/@home标准布局,再上 BTRFS 模式。
模式 | 底层技术 | 支持的文件系统 | 速度 | 空间占用 | 推荐度 |
RSYNC | rsync + 硬链接 | 任意(ext4 / xfs / btrfs 都行) | 第一次慢,后续快 | 随版本线性增长(硬链接省空间) | ✅ 通用首选 |
BTRFS | Btrfs 原生子卷快照 | 仅 Btrfs,且需 @+@home布局 | 秒级 | 几乎为零(写时复制共享) | ✅✅ Btrfs 用户首选 |
⚠️重要: Timeshift 的BTRFS 模式只支持 Ubuntu-type 子卷布局(根子卷叫 @,家目录子卷叫 @home)。如果装系统时根分区是 Btrfs,但没用这个布局(比如 openSUSE 的布局、或手动只建了一个 /子卷),BTRFS 模式会直接报错或不支持。Fedora 默认 Btrfs 但子卷命名不同,Timeshift BTRFS 模式对它就不够友好——要么改布局,要么用 RSYNC 模式。如果坚持用 BTRFS 模式,可以在安装时手动创建 @/@home子卷,或装好后调整布局(有风险,建议先在虚拟机/测试环境试)。
三、安装 Timeshift
国内用户装软件,先把软件源换成国内镜像(清华/中科大/阿里),不然apt/dnf慢得想哭。
Debian / Ubuntu / Linux Mint:
# 国内先把源换成清华/中科大(以 Ubuntu 为例,一行切换)
# sudo sed -i 's|archive.ubuntu.com|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
sudo apt update
sudo apt install -y timeshift
Fedora:
sudo dnf install -y timeshift
# 注意:Fedora 仓库里仍是 22.11.2 老版本,功能够用,但比 Mint 的 25.12.4 旧不少
Arch / Manjaro:
sudo pacman -S timeshift
💡提示:桌面版直接打开 Timeshift 图形界面即可;服务器/无图形界面用下面的 CLI 命令一样能建快照、定计划。
四、RSYNC 模式实战(通用、最稳)
如果不确定自己是不是 Btrfs、子卷布局长什么样,直接用 RSYNC 模式,它对文件系统零要求,最不容易踩坑。
4.1 第一次配置(图形界面)
打开 Timeshift → 向导:
1.选类型:选 "RSYNC"(默认)
2.选快照位置:挑一块和根分区不同的盘/分区(比如第二块硬盘、或移动硬盘)。别选根分区自己,否则等于没备份
3.定计划:建议"每日 1 份 + 每周 1 份 + 每月 1 份",保留数按磁盘大小调(一般日 5 / 周 3 / 月 2)
4.用户家目录:默认排除 /home(只还原系统)。如果想给个人配置留快照,去"用户"标签勾上"包含隐藏文件"
⚠️注意:这个"包含隐藏文件"选项只备份 /home 下的隐藏配置文件(如 .bashrc、.config),不会备份照片、视频、文档等普通文件。个人文档仍要走 Borg/rclone 独立备份,别以为勾了它就万事大吉。
4.2 CLI 创建与还原(服务器必备)
# 列出可用设备,Timeshift 会自动选默认快照盘
sudo timeshift --list-devices
# 手动创建一个快照(O = ondemand 手动标签)
sudo timeshift --create --comments "升级内核前" --tags O
# 列出所有快照
sudo timeshift --list
# 还原到某个快照(会重启生效)
sudo timeshift --restore --snapshot '2026-08-03_20-00-00'
# 删除旧快照
sudo timeshift --delete --snapshot '2026-08-01_02-00-00'
💡提示: RSYNC 模式的快照本质是"带硬链接的整份拷贝"。第一次是全量复制(比如 2.7GB 系统文件约 40-50 秒),之后只复制变化文件,几秒搞定,且多个快照之间共享未变文件(硬链接),比想象中省空间。硬链接不是复制文件,而是同一个数据块有多个文件名指向它——所以 100 个快照里同一个没改的文件,磁盘上只占一份空间。
五、BTRFS 模式实战(快、省空间)
如果根分区是 Btrfs,且安装时用了@ + @home标准布局(Ubuntu 25.04+ 安装器里选 Btrfs 默认就是这布局;Fedora 需要手动改),那 BTRFS 模式体验好得多。
5.1 确认子卷布局
# 看看是不是 @ / @home 布局
sudo btrfs subvolume list /
# 典型输出(Ubuntu 默认):
# ID 256 gen 12345 top level 5 path @
# ID 257 gen 12345 top level 5 path @home
只要看到@和 @home这两行,BTRFS 模式就能用。
5.2 配置与创建
图形界面向导里选 "BTRFS",Timeshift 会自动识别@子卷并接管。CLI 强制 BTRFS 模式:
sudo timeshift --btrfs# 进入BTRFS 模式向导
sudo timeshift --create --comments "升级前" --tags O
sudo timeshift --list
⚠️关键差异: BTRFS 模式创建快照是秒级、几乎不占空间的——因为它不是复制数据,而是"写时复制(CoW)"的指针。系统40GB,建 100 个快照可能也只多占几百 MB(取决于改了多少文件)。
5.3 BTRFS 模式的坑(务必看)
坑 | 现象 | 解决 |
子卷布局不对 | 选 BTRFS 模式报"不支持的布局" | 改成 RSYNC 模式,或重装时改 @/@home布局 |
swap 文件在 @里 | 快照创建失败,报 "Text file busy" | 把 swapfile 移到独立子卷 @swap |
只还原了系统 | /home 个人文件没回来(默认设计) | 这是有意为之,个人数据靠备份(见第十节) |
六、Btrfs 快照原理:为什么又快又省
理解原理,才知道它为什么"神奇":
Btrfs 用 写时复制(Copy-on-Write, CoW)。拍快照时,系统不复制任何数据,只是记一笔"此刻 @的状态"。之后修改文件,Btrfs 会把"新版本"写到别处,旧版本的数据块原封不动保留——快照指向那些旧块。所以:
·快照瞬间完成(只记元数据)
·快照初始占用 ≈ 0
·改得越多,快照和当前系统"分道扬镳"越多,占用才慢慢涨。所以刚拍完快照时占用≈0,过一个月可能涨到几 GB——涨多少取决于这期间改了多少数据
💡提示:这正是它和 RSYNC/备份的本质区别——快照是"同一份数据的不同视图",备份是"数据的独立副本"。视图共享底层数据(快、省),副本各自独立(慢、占空间,但抗盘坏)。
七、手动 Btrfs 快照与回退(不依赖 Timeshift 也能玩)
Timeshift 底层其实就是调这些命令。学会手动版,遇到 Timeshift 抽风也能自救。
创建只读快照:
# 先挂到顶层(subvolid=5 是 Btrfs 顶层,能看到所有子卷)
sudo mount -o subvolid=5 /dev/sda2 /mnt
# 给当前 @ 拍一个只读快照,存到 /mnt/.snapshots/
sudo btrfs subvolume snapshot -r /mnt/@ /mnt/.snapshots/@-before-update
sudo umount /mnt
回退(把系统根换成那个快照):
sudo mount -o subvolid=5 /dev/sda2 /mnt
# 1. 把当前(坏掉的)@ 改个名留着,别直接删,方便反悔
sudo mv /mnt/@ /mnt/@-broken-$(date +%Y%m%d)
# 2. 从只读快照创建一个【可写】快照,作为新的 @
sudo btrfs subvolume snapshot /mnt/.snapshots/@-before-update /mnt/@
sudo umount /mnt
sudo reboot
重启后系统就回到了快照那一刻。确认没问题再删@-broken-*。
八、进阶:开机从快照启动(grub-btrfs)
Timeshift 还原要进系统才能操作——但如果系统已经起不来了呢?这时候需要 grub-btrfs,它把快照做成 GRUB 启动菜单项,开机选一下就能进旧快照。
Arch(原版 grub-btrfs):
sudo pacman -S grub-btrfs
sudo systemctl enable --now grub-btrfsd# 守护进程,自动更新菜单
sudo update-grub# 重新生成 GRUB
💡提示(Arch 用户):grub-btrfs包本身已自带 grub-btrfsd.service(自动监听快照变化需要可选依赖 inotify-tools,装上:sudo pacman -S inotify-tools)。若快照是 Timeshift 创建的,还要编辑 service把 ExecStart加上 --timeshift-auto参数(详见 Arch Wiki),否则它只会监视默认的 /.snapshots目录、看不到 Timeshift 的快照。
Debian / Ubuntu(用 fork grub-btrfsd):
# 部分新版本已进官方源;没有的话用社区维护的 grub-btrfsd 包
sudo apt install -y grub-btrfsd
sudo systemctl enable --now grub-btrfsd
sudo update-grub
装好后重启,GRUB 菜单会出现"Btrfs Snapshots"子菜单,列出所有快照。选一个进去是只读视图——可以进去翻文件、确认"就是它了",再按第七节的手动方式把它设成可写、永久回退。
⚠️注意:直接启动只读快照时,如果 /var/log或 /var没在独立子卷,系统可能写不进日志而报错。grub-btrfs 对只读快照启动有内置处理机制来规避这个问题,但长期作为系统根仍应转为可写快照(按第七节),而不是一直跑在只读快照里。
九、国内适配要点
场景 | 说明 | 建议 |
软件源慢 | Timeshift 在官方源,国内直连慢 | 装前先把 apt/dnf 源换清华/中科大/阿里镜像 |
Btrfs 安装器支持 | Ubuntu 25.04+、Fedora、openSUSE 安装时可选 Btrfs | 新装系统想用快照,选 Btrfs + @/@home布局最省心 |
Fedora 版本老 | dnf 里 Timeshift 是 22.11.2 | 功能够用;想要新版可从 Flatpak 或源码装 |
图形界面依赖 | Timeshift 是 GTK 程序,纯服务器环境也能 CLI 用 | 无桌面服务器用第四节的 CLI 命令即可 |
十、快照的边界:它真不能替代备份
写完操作和原理,必须泼盆冷水——快照救不了这些事:
1.硬盘物理损坏:快照和系统在同一块盘上,盘一挂,快照跟着没。这是快照最大的盲区。
2.勒索病毒:同盘快照可能被一起加密(除非设了只读/防删,但 Timeshift 快照默认不防这个)。
3.默认不含个人文件:Timeshift 默认只快照系统,照片文档在 /home,得另做备份。
4.误删整个分区:快照是分区内的子卷,分区没了就没了。
💡提示:把本篇和前几篇串起来,一套完整的数据安全方案是:Timeshift 快照(本地系统翻车秒回)+ BorgBackup(去重加密的版本库)+ rclone 同步到云端(异地第三份)。三者不是"选一个用",而是三层防护各自负责一个维度——快照管"快",Borg 管"省",rclone管"远"——各管一摊,谁也替代不了谁。
十一、常见坑速查
坑 | 现象 | 解决 |
快照盘选了根分区自己 | 和系系统同盘,等于没备份 | 选另一块盘/分区做快照位置 |
BTRFS 模式报布局不支持 | 子卷不是 @/@home | 改用 RSYNC 模式 |
还原后 /home 没了 | 默认不备份个人文件 | 个人数据靠 Borg/rclone,不在 Timeshift 范围 |
swapfile 在 @里 | 快照创建失败 "Text file busy" | 移到独立子卷 @swap |
装了 Docker 后快照异常 | Timeshift 不支持容器系统 | Docker 数据目录排除在快照外,或只用 Borg 备 |
grub-btrfs 菜单不出现 | 没跑 update-grub或没启守护进程 | sudo update-grub + systemctl enable --now grub-btrfsd |
启动只读快照报写错误 | /var 没独立子卷 | 进快照确认后按第七节转可写,别长期只读跑 |
快照越来越多占满盘 | Btrfs 快照会随改动累积 | 设保留策略 + 定期 timeshift --delete旧快照 |
误以为快照=异地备份 | 盘坏全没 | 配合 rclone/Borg 做异地副本(见第十节) |
Fedora 上 BTRFS 模式别扭 | 子卷命名非 Ubuntu 布局 | 直接用 RSYNC 模式最稳 |
小结
Timeshift + Btrfs 快照是 Linux 桌面性价比最高的"系统翻车保险":配置一次,之后升级、改配置前自动留底,出事两分钟回退。但它只管系统、只在本机、只防手滑——真正的"数据安全"还得靠前面三篇的 3-2-1 组合(Borg 去重 + rclone 异地)来兜底。
下篇预告:《Windows 专业备份工具——Veeam Agent 与傲梅轻松备份》,没有 Btrfs 快照的 Windows 怎么给系统做"救命还原盘"。