timeshift:基于 Linux 的系统快照与恢复工具项目

用户可用来保护系统文件和设置,通过定期创建增量快照实现系统恢复。支持 RSYNC 和 BTRFS 两种快照模式,默认排除用户数据,可设置自动快照计划,支持多级别快照管理及跨发行版恢复。【此简介由AI生成】

Branch1Tags1

Timeshift

Timeshift for Linux 是一款功能类似于 Windows 系统还原和 Mac OS 时光机(Time Machine)工具的应用程序。Timeshift 通过定期为文件系统创建增量快照来保护您的系统。这些快照可在日后恢复,以撤销对系统所做的所有更改。

在 RSYNC 模式下,快照是使用 rsync硬链接 创建的。快照之间共享共同文件,从而节省磁盘空间。每个快照都是完整的系统备份,您可以使用文件管理器浏览。

在 BTRFS 模式下,快照利用 BTRFS 文件系统的内置功能创建。BTRFS 快照仅支持采用 Ubuntu 类型子卷布局(包含 @ 和 @home 子卷)的 BTRFS 系统。

Timeshift 与 rsnapshotBackInTimeTimeVault 等应用程序类似,但目标不同。它旨在仅保护系统文件和设置。用户文件(如文档、图片和音乐)会被排除在外。这样可以确保在将系统恢复到较早日期时,您的文件保持不变。如果您需要备份文档和文件的工具,不妨看看出色的 BackInTime 应用程序,它具有更高的可配置性,并提供保存用户文件的选项。

历史

Timeshift 最初由 Tony George 开发和维护。

他的原始代码库仍可在 Github 上获取。

如今,Timeshift 已成为 Xapp 项目的一部分。Xapp 项目是一系列跨桌面环境(DE)和跨发行版的应用程序集合,由 Linux Mint 维护。

特性

极简设置

  • Timeshift 的设置非常简单。只需安装它,首次运行并创建第一个快照即可。可以启用 Cron 任务,以便定期自动创建系统快照。备份级别可在“设置”窗口中选择。

  • 快照默认保存在系统(根)分区的 /timeshift 路径下。也可以选择其他 Linux 分区。为获得最佳效果,快照应保存到外部(非系统)分区。

多快照级别

  • 可启用多个级别的快照 - 每小时、每日、每周、每月和启动时

  • 可为每个级别指定要保留的快照数量

  • 启动快照提供额外的备份级别,每次系统启动时创建。启动快照会延迟 10 分钟创建,以免影响系统启动。

  • 快照会添加标签以指示其时间间隔:

    • H: 每小时
    • D: 每日
    • W: 每周
    • M: 每月
    • B: 启动时
    • O: 按需(手动创建)

Rsync 和 BTRFS 快照

  • 支持在所有系统上创建 rsync 快照

  • 支持在 BTRFS 系统上创建 BTRFS 快照

强烈建议在安装于 BTRFS 分区的系统上使用 BTRFS 快照。BTRFS 快照是系统完美的逐字节副本,不排除任何内容。BTRFS 快照的创建和恢复可在几秒钟内完成,并且磁盘空间开销非常低。

默认排除用户数据

Timeshift 旨在保护系统文件和设置。它不是备份工具,不用于保护用户数据。默认情况下,用户主目录的全部内容都被排除在外。这有两个优点:

  • 当你恢复以前的快照来修复系统时,无需担心文档被覆盖。
  • 你主目录中的音乐和视频收藏不会占用备份设备的空间。

你可以从“设置”窗口中选择性地包含要备份的项目。从“用户”选项卡中选择“包含隐藏项目”选项,将备份和恢复主文件夹中的 .hidden 文件和目录。这些文件夹包含用户特定的配置文件,如有需要可以包含在快照中。

注意:不建议在备份中包含用户数据,因为恢复快照时这些数据会被覆盖。

  • 不同于其他安排在一天中固定时间进行备份的类似工具,Timeshift 设计为每小时运行一次,仅在需要时才创建快照。这更适合那些每天仅将笔记本电脑和台式机开启几个小时的桌面用户。对于这类用户,如果按固定时间安排快照,可能会因系统在计划快照时未运行而导致备份遗漏。通过每小时运行一次并在需要时创建快照,Timeshift 确保不会错过备份。
  • 像 rsnapshot 这样的应用程序通过创建硬链接副本来将快照轮换到下一级别。创建硬链接副本看似是个好主意,但仍会浪费磁盘空间,因为只有文件可以硬链接,目录不能。重复的目录结构可能会占用多达 100 MB 的空间。Timeshift 通过使用标签来维护备份级别,避免了这种浪费。每个快照在磁盘上只有一个副本,并被标记为“每日”、“每月”等。快照位置会为每个备份级别(“每月”、“每日”等)设置一组文件夹,其中包含指向标有该级别的实际快照的符号链接。

系统还原

  • 可以通过在主窗口中选择快照并点击工具栏上的 还原 按钮来还原快照。

  • 快照既可以从运行中的系统(在线还原)还原,也可以从另一个已安装 Timeshift 的系统(离线还原)还原。

  • 如果主系统无法启动,可以从 Ubuntu live CD 启动,在 live 系统上安装 Timeshift,然后还原主系统上的快照。

  • 从运行中的系统还原备份需要重启才能完成还原过程。

跨发行版还原

  • 您也可以跨发行版使用 Timeshift。例如,假设您当前使用的是 Xubuntu,并决定尝试 Linux Mint。您在系统上安装 Linux Mint 并试用一周后,决定回到 Xubuntu。使用 Timeshift,您只需还原上周的快照即可恢复 Xubuntu 系统。Timeshift 会处理诸如重新安装引导加载程序等细节。
  • 由于安装新的 Linux 发行版时会格式化根分区,因此需要将快照保存在单独的 Linux 分区上才能实现此功能。
  • 建议通过 设置 > 用户 中选择 包含隐藏项目 选项,以包含主目录中的隐藏项。

还原后钩子

  • 可以在还原作业结束时运行脚本,以执行重启前可能需要完成的任何操作。这些脚本的位置是 /etc/timeshift/restore-hooks.d。注意:脚本将从已还原的文件系统中运行。

支持的系统配置

  • 常规 - 操作系统安装在非加密分区上

  • LUKS 加密 - 操作系统安装在 LUKS 加密分区上

  • LVM2 - 操作系统安装在 LVM2 卷上(带或不带 LUKS)

  • BTRFS - 操作系统安装在 BTRFS 卷上(带或不带 LUKS)

    • 仅支持带有 @@home 子卷的 Ubuntu 类型布局

    • @@home 子卷可以位于相同或不同的 BTRFS 卷上

    • @ 可以位于 BTRFS 卷上,而 /home 可以挂载在非 BTRFS 分区上

    • 如果使用交换文件,它们不应位于 @@home 中,而应存储在它们自己的子卷中,例如 @swap

    • 不支持其他布局

    • 确保已选择子卷 @/@ 作为根目录。您可以通过执行以下脚本来检查,如果输出为 OK,则一切正常。

      grep -E '^[^#].+/\s+btrfs' /etc/fstab | \
      grep -oE 'subvol=[^,]+' | \
      cut -d= -f2 | \
      grep -qE '^/?@$' && \
      echo 'OK' || \
      echo 'Not OK'
      
    • 默认 BTRFS 子卷必须是 /。您可以使用以下脚本进行设置。

      MP="$(mktemp -d)"
      mount | awk '/on \/ type btrfs/{print $1}' | sudo xargs -I{} mount {} "$MP" && \
      sudo btrfs subvolume set-default 5 "$MP"; \
      sudo umount "$MP"
      
  • GRUB2 - 引导加载程序必须是 GRUB2。不支持 GRUB 旧版和其他引导加载程序。

  • EFI - 支持 EFI 系统。确保在还原快照之前选择了 /boot/efi 分区进行挂载(应用程序会自动执行此操作)。

  • 加密主目录 - 对于使用加密主目录的用户,/home/.ecryptfs/$USER 中的文件将被备份和还原。$HOME 中的解密内容将被排除。这避免了解密内容在用户主目录之外可用的安全风险。

  • 加密私有目录 - 对于使用加密 Private 目录的用户,$HOME/.Private 中的加密文件以及 $HOME/Private 中的解密文件都将被排除(因为它包含用户数据)。用户添加的用于包含来自 $HOME/.Private$HOME/Private 的文件的筛选器将被忽略。

  • Docker 和容器 - 不支持 Docker 和容器化系统。在这类系统上运行 Timeshift 将导致不可预测的结果。

安装

基于 Debian 的发行版

Debian、Ubuntu、Linux Mint、Elementary OS 等。

从软件仓库安装 Timeshift:

sudo apt-get update
sudo apt-get install timeshift

或者从源代码构建并安装 timeshift:

sudo apt install make gettext valac libvte-2.91-dev libgee-0.8-dev libjson-glib-dev
make
sudo make install

Fedora

Fedora 尚未得到完全支持。BTRFS 快照仅支持特定于 Ubuntu 的布局。

sudo dnf update
sudo dnf install timeshift

卸载

在终端窗口中运行以下命令:

sudo apt-get remove timeshift

sudo dnf remove timeshift

具体取决于您的软件包管理系统。

请记住在卸载前删除所有快照。否则,这些快照将继续占用系统空间。要删除所有快照,请运行应用程序,从列表中选择所有快照(按 CTRL+A),然后点击工具栏上的 删除 按钮。这将删除所有快照并移除根目录下的 /timeshift 文件夹。

已知问题与限制

BTRFS 卷

BTRFS 卷必须采用带有 @@home 子卷的 Ubuntu 类型布局。其他布局不受支持。仅包含 @ 子卷且 /home 位于非 BTRFS 分区的系统也受支持。

如果在 @@home 子卷内挂载了 Linux 交换文件,可能会出现 Text file busy / btrfs returned an error: 256 / Failed to create snapshot 错误,从而导致快照创建失败。请将交换文件移出 @@home,例如移至其自己的子卷(如 @swap)。

磁盘空间

Timeshift 需要大量磁盘空间来存储快照数据。被选为快照设备的设备必须有足够的可用空间来存储将要创建的快照。

如果备份设备空间不足,请尝试以下步骤:

  • 减少备份级别数量 - 取消勾选部分备份级别,只保留一个。
  • 减少保留的快照数量 - 在 计划 选项卡中,将快照数量设置为 5 个或更少。
  • 您也可以完全禁用计划快照,仅在需要时手动创建快照。

引导加载程序与 EFI

  • 仅支持使用 GRUB2 引导加载程序的系统。在使用旧版本 GRUB 的系统上尝试创建和恢复快照,可能会导致系统无法启动。
  • EFI 系统完全受支持。恢复快照时,请确保 /boot/efi 分区已映射。如果检测到该分区,它将自动映射。
  • 如果您从 Live CD/USB 进行恢复,且已安装的系统使用 EFI 模式,则必须以 EFI 模式从 Live CD/USB 启动。

贡献

您可以通过多种方式为该项目做出贡献:

  • 追踪器中提交想法和报告问题
  • Launchpad中将此应用程序翻译成其他语言
  • 通过修复问题和提交拉取请求来贡献代码更改(不要修改翻译,翻译工作在Launchpad上进行)
  • 要开始编码,请参阅开发文档

Introduction

用户可用来保护系统文件和设置,通过定期创建增量快照实现系统恢复。支持 RSYNC 和 BTRFS 两种快照模式,默认排除用户数据,可设置自动快照计划,支持多级别快照管理及跨发行版恢复。【此简介由AI生成】

Customize my domain