当前位置:首页>Linux>Linux 系统快照与还原——Timeshift 与 Btrfs 快照回退

Linux 系统快照与还原——Timeshift 与 Btrfs 快照回退

  • 2026-09-07 23:23:46
Linux 系统快照与还原——Timeshift 与 Btrfs 快照回退

大家好,我是冯哥的缓存。前几篇我们聊了备份策略、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 怎么给系统做"救命还原盘"。

最新文章

随机文章