1. Arch linux 安装
  2. Arch Linux 基础软件安装与KDE 桌面美化
  3. 在Arch中使用Timeshift保系统平安

前言

Arch Linux 有各种好处,但也有一些烦恼。

一个比较普遍的一个问题是:更新完系统后,无法正常启动、或者无法正常进入桌面,俗称“滚挂了”。

对于这个问题我们可以利用Timeshift这个工具来有效处理。

Timeshift 是一个被设计用来保护系统文件的备份工具,类似于Windows的“系统还原”,MacOS的“Time Machine”功能。

我们可以通过利用Timeshift对系统整体进行“快照”,简单的说来就是对系统进行备份。

当我们遇到“滚挂了”的情况时,可以利用该工具回到最近一个正常的系统快照,轻松拯救挂掉的系统。

Timeshift 预览

本文介绍基于BTRFS文件系统的Timeshift用法,对于其他文件系统例如:Ext4本人未在使用,不做介绍。

BTRFS

Btrfs是一种新型的Linux文件系统,诞生至今不到20年。

不过它有很多优秀的特性和主流Linux发行版对其拥抱的态度,这两个理由足以让我在工作机上选用它。

它有这些优点:

  • Btrfs采用B-tree索引文件的元信息,这跟数据库的索引原理类似,在查找文件方面足够快速。
  • 对SSD进行了具有针对性的读写优化,可以一定程度上的提高I/O性能。
  • 利用透明压缩的特性,可以减少对SSD的写入,显著提高SSD的使用寿命。
  • 内置快照功能。 快照的原理不同于文件副本,它类似于操作日志,需要占用空间远远少于创建文件副本。
  • 支持动态添加设备,新增硬盘后可以很方便的加入Btrfs文件系统,类似LVM。

Timeshift

简单介绍一下Timeshift的安装和基本用法。

首先需要安装:

sudo pacman -S timeshift # 安装Timeshift
sudo systemctl enable --now cronie.service # 启用Crond服务,启用该服务后Timeshift才能定期自动创建快照

安装完毕后,打开菜单找到Timeshift并启动,如下图:
启动Timeshift

第一次启动会进入设置向导,此处选择BTRFS快照类型,如下图:
选择快照类型

进入下一步,选择快照的存储位置,如下图:
BTRFS不支持将快照存储在系统目录之外的其他地方,因此我们选择系统所在的磁盘即可。

选择快照位置

进入下一步,设置一下快照的创建频率,如下图:
我选择每周、每日、每小时的快照都创建。因为快照不是特别占用空间,因此我适当提高快照频率。
设置创建快照的频次

最后一步,需要选择一下是否需要对用户目录创建快照,如下图:
我个人是极不推荐对Home目录进行快照的,原因很简单:Home目录里面除了用户自定义的配置外,还有我的很多代码。
如果这些文件在恢复系统快照的时候也一并被恢复成了旧版本,那我岂不是一朝回到解放前?
另外还有一些文档、视频、图片这些都是不适合恢复成旧版本的。
谁也不想恢复一次系统之后,所有的工作都没了吧?
因此这里推荐不勾选
择是否需要对用户目录创建快照

设置完毕后会进入主界面,如下图:
Timeshift主界面

根据我们在向导中选择的“计划”,Timeshift会定时自动创建快照。除此之外,我们也可以手动创建快照。

我一般会在 执行 sudo pacman -Syyu 之前手动创建一个快照,又或者准备安装一个庞大的软件,预感到会有很多依赖会塞到我的系统时,也会手动创建一个快照。

如果安装失败,立马就可以恢复到之前的干净状态,再重新来过。

使用Timeshift恢复系统

了解了Timeshift的基本功能后,我们来尝试使用Timeshift恢复损坏的系统。

一般来说,系统坏掉了之后面临三种情况:

  1. 部分功能损坏,但是不影响进入系统。
  2. 系统能正常启动,但是无进入桌面。
  3. 系统无法正常启动。

就这三种情况,我们分别介绍一下如何使用Timeshift进行恢复。

能正常进入桌面系统

运行timeshift,选中某个快照后,点“恢复”按钮,按提示操作,之后重启即可。
恢复系统到某个快照

系统能启动,但是无法进入桌面

  1. 键盘按Ctrl + Alt + F2 ~ F6 切换到终端,输入用户名密码登录进入命令行模式。

  2. sudo timeshift --list 列出所有可用快照。

  3. sudo timeshift --restore --snapshot '20XX-XX-XX_XX-XX-XX' --skip-grub 恢复到选定的快照,并跳过grup的安装,如果情况特殊请酌情调整参数。

系统彻底烂掉了,无法进入系统

  1. Arch 安装盘启动系统。
  2. 挂载系统分区(以下命令请根据系统的实际分区情况进行调整)。
mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home
mount /dev/sdxn /mnt/boot/efi
arch-chroot /mnt
  1. 恢复系统,根据提示选择期望的快照(跟第二种情况的操作步骤一样了)。
  2. sudo timeshift --list
  3. sudo timeshift --restore --snapshot '20XX-XX-XX_XX-XX-XX' --skip-grub
  4. 重启系统,完成恢复。

操作视频