在鲸湾重建计划的前一篇文章中,我们在安装过程中成功为Debian娘配置了正确的@
和@home
子卷。众所周知,Btrfs有着和虚拟机相似的快照能力,弄坏了就可以从快照回档,但由于手动创建和恢复比较麻烦,所以我们需要使用timeshift这类快照管理软件配合进行快照与回档。妈妈再也不用担心我玩Debian Sid把Debian娘滚挂了
不过如果我们的情况十分严重,已经惨到了连系统都进不去该怎么办?就像Debian官方对sid的介绍一样
我应该在我的桌面机器上使用 sid 吗?
如果你觉得你可以处理损坏的 Debian 系统的话,当然可以。你知道在 libpam0g 破损、阻止所有用户登陆的情况下该怎么做吗?你知道在 grub 破损导致引导过程卡死的情况下该怎么做吗?这些事情都发生过。它们可能会再次发生。
不用担心,这篇文章会教你配置另一个项目grub-btrfs
,这样你就能在每次启动时的grub菜单引导启动你的btrfs快照,快速恢复到系统崩溃前的状态,接下来,让我们开始吧!
配置timeshift
首先安装timeshift
sudo apt install timeshift
图形化配置timeshift
在安装完成后,你就在系统的应用程序菜单栏找到timeshift
,点击并打开它
打开之后,你会看到这样的界面,选择Btrfs
,点击下一步
之后,设置你的快照存储文章,一般来说这里不需要更改。如果这里timeshift提示你需要选择具有@根子卷的btrfs卷且无法下一步,请参阅我的鲸群重建计划的上一篇文章。
timeshift可能会问你是否在快照中包含@home
子卷,我这里勾上了这个选项
之后设置你的定时快照任务,我这里选择了一天一次
所有完成后,你就来到了主界面,你可以点击菜单栏上的创建
按钮来创建你的第一个快照
这样,timeshift的初始化就完成了o(≧v≦)o
使用命令行配置timeshift
大多数情况下,debian娘会被安排管理服务器,一般来说服务器没有图形化界面,那这样我们要怎么初始化timeshift呢?
不用担心,timeshift也提供了cli方法在终端中配置和使用它
你可以直接执行一次timeshift --create
来创建一个快照,这样,timeshift会自动检测btrfs并创建配置文件
╭─[fridayssheep@allinone:/e/timeshift]—{^o^}—(14:58:01)—(14ms)
╰─$> sudo timeshift --create
First run mode (config file not found)
Selected default snapshot type: BTRFS
Using system disk as snapshot device for creating snapshots in BTRFS mode
Mounted '/dev/nvme0n1p2' (subvolid=0) at '/run/timeshift/236397/backup'
btrfs: Quotas are not enabled
Creating new backup...(BTRFS)
Saving to device: /dev/nvme0n1p2, mounted at path: /run/timeshift/236397/backup
Created directory: /run/timeshift/236397/backup/timeshift-btrfs/snapshots/2025-10-23_14-58-13
Created subvolume snapshot: /run/timeshift/236397/backup/timeshift-btrfs/snapshots/2025-10-23_14-58-13/@
Created control file: /run/timeshift/236397/backup/timeshift-btrfs/snapshots/2025-10-23_14-58-13/info.json
BTRFS Snapshot saved successfully (0s)
Tagged snapshot '2025-10-23_14-58-13': ondemand
------------------------------------------------------------------------------
Removed cron task: /etc/cron.d/timeshift-hourly
安装完成后,timeshift会在/etc/timeshift
下生成一个叫做timeshift.json
的文件
╭─[fridayssheep@allinone:/e/timeshift]—{^o^}—(14:47:08)—(51.308s)
╰─$> cd /etc/timeshift
之后,编辑这个文件
sudo vim timeshift.json
{
"backup_device_uuid" : "df786aca-5ee2-4ca7-9107-a0d1cccc419c",
"parent_device_uuid" : "",
"do_first_run" : "false",
"btrfs_mode" : "true",
"include_btrfs_home_for_backup" : "true",
"include_btrfs_home_for_restore" : "false",
"stop_cron_emails" : "true",
"schedule_monthly" : "false",
"schedule_weekly" : "false",
"schedule_daily" : "true",
"schedule_hourly" : "false",
"schedule_boot" : "false",
"count_monthly" : "2",
"count_weekly" : "4",
"count_daily" : "1",
"count_hourly" : "6",
"count_boot" : "5",
"date_format" : "%Y-%m-%d %H:%M:%S",
"exclude" : [],
"exclude-apps" : []
}
你可以修改配置文件中的内容来设置timeshift,比如修改include_btrfs_home_for_backup
来配置快照是否包含@home
子卷,设置schedule_xxx
和修改count_xxx
后对应的选项来实现定时快照,完成后保存并退出,你的配置将会在下一次创建快照时生效
你可以使用timeshift --check
来检查是否到了定时创建快照的时间,如果到了这个时间timeshift会自动再创建一份快照
╭─[fridayssheep@allinone:~]—{^o^}—(15:30:32)—(5ms)
╰─$> sudo timeshift --check
[sudo] fridayssheep 的密码:
Using system disk as snapshot device for creating snapshots in BTRFS mode
Mounted '/dev/nvme0n1p2' (subvolid=0) at '/run/timeshift/243448/backup'
btrfs: Quotas are not enabled
Daily snapshots are enabled
Last daily snapshot is 17 hours old
------------------------------------------------------------------------------
配置grub-btrfs
首先安装git
和make
sudo apt install git make
由于Debian娘的源并没有包含grub-btrfs
,所以我们需要从源码编译安装
git clone https://github.com/Antynea/grub-btrfs.git
cd grub-btrfs/
sudo make install
启用grub-btrfs
服务
sudo systemctl start grub-btrfsd
sudo systemctl enable grub-btrfsd
完成后,执行sudo update-grub
,每次更新grub的时候都会将存在的快照写入grub的菜单
sudo update-grub
重启后,就可以在grub里面看到snapshot选项
从Btrfs快照恢复
启动timeshift,我们先拍摄一次快照,然后更换了桌面壁纸,在文档文件夹中添加了几只初音的图片o(*////▽////*)q。
接下来,选择之前创建的快照,点击上方的恢复
此时timeshift将自动拍摄恢复时的快照,系统将被挂起,所有文件不可被修改
重启后,系统被恢复成了快照时的样子
当然,你也可以使用timeshift命令来恢复快照
sudo timeshift --restore
timeshift会询问你要恢复哪个快照,按照屏幕中的提示选择即可
在grub中启动btrfs快照
需要注意的是,从btrfs启动的快照不会包含除了@以外的子卷,此时挂载的其他子卷并不是包含在快照中的子卷,而是实时的子卷
评论