Arch Linux Timeshift 完整教程

适用范围:本文用于保护系统文件和系统配置,不替代个人数据备份。设备 UUID、文件系统布局和恢复环境必须按当前机器确认,示例值不能直接复制。

什么是 Timeshift

Timeshift 是 Linux 下最流行的系统快照工具之一,原由 Tony George 开发,现为 Linux Mint Xapp 项目的一部分。

作用类似于:

  • Windows 系统还原
  • macOS Time Machine(仅系统部分)

可在以下情况快速回滚:

  • pacman 更新后系统损坏
  • 安装错误驱动导致无法进入桌面
  • 修改配置导致系统异常
  • 内核升级失败
  • 引导器损坏

注意: Timeshift 设计用于保护系统文件和设置,不是个人数据备份工具。默认排除 /home/ 用户数据,确保恢复时不会覆盖你的文档。

用户文件建议使用:

  • rsync / borg / restic / Syncthing

安装 Timeshift

sudo pacman -S timeshift

Timeshift 依赖 cron 进行定时调度,安装后启用:

sudo systemctl enable --now cronie.service

也可以使用 timeshift-systemd-timerAUR 替代 cronie。

验证安装:

timeshift --version

查看磁盘布局

lsblk -f

输出示例(ext4):

nvme0n1
├─nvme0n1p1 vfat
├─nvme0n1p2 ext4 /
└─nvme0n1p3 ext4 /home

Btrfs 示例:

nvme0n1
├─nvme0n1p1 vfat
└─nvme0n1p2 btrfs  /@  /@home

Timeshift Btrfs 模式要求 @ 和 @home 子卷布局,其他布局不兼容。


选择工作模式

RSYNC 模式(推荐新手)

适用于所有文件系统:ext4、xfs、f2fs、btrfs。

特点:通用、稳定、不依赖文件系统。

BTRFS 模式

仅适用于 Ubuntu 风格子卷布局(@ 和 @home)。

特点:创建快照秒级完成、占用空间极小、恢复速度快。

如果分区是 Btrfs 但没有 @/@home 布局,请先转换,参考 ArchWiki - Timeshift。


首次配置

启动配置向导:

sudo timeshift-launcher

或者直接启动 GTK 界面:

sudo timeshift-gtk

首次运行会引导选择:

  1. 快照类型 — RSYNC 或 BTRFS
  2. 快照存储位置 — 默认存储在系统根分区 /timeshift,推荐存到独立数据盘或大容量非系统分区

推荐快照策略

Timeshift 支持五个快照层级:Hourly、Daily、Weekly、Monthly、Boot。

层级保留数量说明
Daily7最近 7 天
Weekly4最近 4 周
Monthly3最近 3 个月
Hourly0关闭
Boot0关闭

Boot 快照在系统启动 10 分钟后创建,适合频繁测试重启的场景。


推荐过滤器

Timeshift → Settings → Filters

排除以下目录(避免快照膨胀和污染恢复):

# 用户数据
/home/**

# 临时/运行时
/tmp/**
/var/tmp/**
/run/**
/proc/**
/sys/**
/dev/**

# 缓存/日志(可重新生成)
/var/cache/**
/var/log/**
/var/lib/systemd/coredump/**

# 挂载点
/mnt/**
/media/**

# 应用数据
/var/lib/docker/**
/var/lib/containerd/**
/var/lib/flatpak/**
/var/lib/libvirt/images/**
/var/lib/lxd/**

# 服务数据
/opt/**
/srv/**
/var/www/**
/var/spool/**
/var/mail/**

# 回收站
/.local/share/Trash/**

# Swap 文件
/swap.img

推荐 timeshift.json

配置文件位置:/etc/timeshift/timeshift.json

首次配置后自动生成,也可以复制模板 /etc/timeshift/default.json 后手动编辑。不要直接复制本文中的 backup_device_uuid;该值只代表示例设备。

{
  "backup_device_uuid" : "<替换为实际备份设备 UUID>",
  "parent_device_uuid" : "",
  "do_first_run" : "false",
  "btrfs_mode" : "false",
  "include_btrfs_home_for_backup" : "false",
  "include_btrfs_home_for_restore" : "false",
  "stop_cron_emails" : "true",
  "schedule_monthly" : "true",
  "schedule_weekly" : "true",
  "schedule_daily" : "true",
  "schedule_hourly" : "false",
  "schedule_boot" : "false",
  "count_monthly" : "3",
  "count_weekly" : "4",
  "count_daily" : "7",
  "count_hourly" : "0",
  "count_boot" : "0",
  "date_format" : "%Y-%m-%d %H:%M:%S",
  "exclude" : [
    "/home/**",
    "/proc/**",
    "/sys/**",
    "/dev/**",
    "/run/**",
    "/tmp/**",
    "/var/tmp/**",
    "/mnt/**",
    "/media/**",
    "/var/cache/**",
    "/var/log/**",
    "/var/lib/systemd/coredump/**",
    "/swap.img",
    "/var/lib/docker/**",
    "/var/lib/containerd/**",
    "/var/lib/flatpak/**",
    "/var/lib/libvirt/images/**",
    "/var/lib/lxd/**",
    "/opt/**",
    "/srv/**",
    "/var/www/**",
    "/.local/share/Trash/**",
    "/var/spool/**",
    "/var/mail/**",
    "/.Trash-1000"
  ]
}

创建快照

手动创建:

sudo timeshift --create

添加备注:

sudo timeshift --create --comments "Before pacman -Syu"

查看所有快照:

sudo timeshift --list

脚本中使用建议加 --scripted 参数,避免交互提示。


删除快照

查看快照列表:

sudo timeshift --list

删除指定快照:

sudo timeshift --delete --snapshot '2026-06-18_12-00-01'

删除全部:

sudo timeshift --delete-all

系统恢复

图形界面恢复

sudo timeshift-launcher

选择快照 → Restore → 按向导完成。

命令行恢复

sudo timeshift --restore

按提示选择快照,或直接指定:

sudo timeshift --restore --snapshot '2026-06-18_12-00-01'

系统无法启动时恢复

方式一:带图形界面的 Live 环境恢复

普通 Arch ISO 默认没有图形桌面。需要使用带图形界面的 Live 系统,确认快照设备已连接并安装 Timeshift 后,再通过 GUI 选择快照恢复。

原文安装命令(保留):

sudo pacman -S timeshift

如果只能使用 Arch ISO,请使用 Timeshift 命令行流程,并先确认根分区、EFI 分区和快照设备的实际设备名;不要把下面的 arch-chroot 示例直接套用到所有磁盘布局。

方式二:arch-chroot 恢复

sudo mount /dev/nvme0n1p2 /mnt
arch-chroot /mnt
timeshift --list
timeshift --restore
reboot

方式一更可靠,因为 Timeshift 在 chroot 环境下可能无法正确处理某些操作(如 EFI 分区挂载、GRUB 重装)。


GRUB 与 Btrfs 快照

如果使用 Btrfs 模式,可安装 grub-btrfs 让快照出现在 GRUB 启动菜单:

sudo pacman -S grub-btrfs inotify-tools

配置自动更新:

sudo systemctl edit --full grub-btrfsd

将 ExecStart 改为:

ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto

启用服务:

sudo systemctl enable --now grub-btrfsd

之后每次创建快照,GRUB 菜单自动多出一个"快照启动项",可直接启动进快照状态。


图形界面权限问题

timeshift-launcher 需要以管理员权限访问系统文件。在 Wayland 会话中,直接使用 sudo timeshift-launcher 可能因为图形授权或显示服务而失败。

不要把 xhost +SI:localuser:root 当作通用 Wayland 解决方案。它只适用于特定的 X/XWayland 场景,并会扩大 root 对当前显示会话的访问权限。优先使用桌面环境提供的 polkit 授权,或改用命令行及带图形界面的 Live 环境恢复。

原文方案(保留,仅适用于确认存在 X/XWayland 显示服务的环境):

sudo pacman -S xorg-xhost
xhost +SI:localuser:root

完成 GUI 操作后撤销授权:

xhost -SI:localuser:root

执行后应在完成 GUI 操作时恢复显示权限,不要在多用户环境中长期保留该授权。


常用命令

操作命令
创建快照sudo timeshift --create --comments "备注"
查看快照sudo timeshift --list
恢复快照sudo timeshift --restore --snapshot "名称"
删除快照sudo timeshift --delete --snapshot "名称"
删除全部sudo timeshift --delete-all
检查配置sudo timeshift --check
查看配置cat /etc/timeshift/timeshift.json
查看版本timeshift --version

最佳实践

更新系统前:

sudo timeshift --create --comments "Before update"

安装 NVIDIA 驱动前:

sudo timeshift --create --comments "Before NVIDIA"

升级内核前:

sudo timeshift --create --comments "Before kernel upgrade"

习惯:

升级前创建快照 → 出问题恢复 → 继续工作