当前位置: 首页 > article >正文

深入探究 Linux 系统的快照备份与恢复:TimeShift 实践与原理解析

文章目录

  • 前言
  • 一、TimeShift 的工作原理
  • 二、TimeShift 的备份方式
    • 优缺点对比:
  • 三、TimeShift 的安装和配置
  • 四、TimeShift 的实际操作流程
    • 1. 创建系统快照
    • 2. 查看已创建的快照
    • 3. 删除旧快照
    • 4. 还原快照
  • 五、TimeShift 快照操作步骤
    • 1. 设置备份目标目录
    • 2. 自定义备份和排除目录
    • 3. 开始备份操作
    • 4. 还原到指定快照
    • 5. 测试 TimeShift 备份还原的效果
      • 1. 备份前的系统状态
      • 2. 安装 PHP 并验证
      • 3. 还原到快照并验证
  • 六、总结
    • 补充说明:默认不备份的目录与原因
    • 活动目录的备份注意事项


前言

在 Linux 系统的运维管理中,可靠的快照备份与恢复工具尤为关键。TimeShift 作为一款轻量化却功能强大的快照工具,广泛应用于系统状态的备份与恢复。本文将深入探讨 TimeShift 的原理、备份方式、优缺点,以及如何通过真实操作验证 TimeShift 的备份恢复效果。

一、TimeShift 的工作原理

TimeShift 通过文件系统快照实现备份与恢复,支持基于 rsyncBtrfs 两种模式:

  • Rsync 模式:利用 rsync 工具的增量备份功能,仅备份变化的文件。
  • Btrfs 模式:依赖于 Btrfs 文件系统的原生快照功能,以更高的效率完成备份。

两者的不同在于:Rsync 模式适用于任何文件系统,但速度相对慢;而 Btrfs 模式仅适用于 Btrfs 文件系统,备份和恢复速度更快。

二、TimeShift 的备份方式

TimeShift 的备份分为手动和自动:

  • 手动备份:通过命令行或图形界面,按需创建快照。
  • 自动备份:根据配置文件中的时间策略自动创建快照。支持按小时、每日、每周和每月等多种频率。

优缺点对比:

  • 优点:自动化程度高,增量备份占用存储小,支持多版本快照管理。
  • 缺点:无法选择备份特定文件或目录,限制较大。

三、TimeShift 的安装和配置

Ubuntu Server 24 系统上,安装 TimeShift:

sudo apt update
sudo apt install timeshift

配置 TimeShift 时,可以编辑 /etc/timeshift/timeshift.json 文件,将“备份设备”设置为适合的磁盘,并根据需求修改快照的 exclude(排除)项。

示例配置文件内容:

{
  "backup_device_uuid": "YOUR-DEVICE-UUID",
  "btrfs_mode": "false",
  "schedule_daily": "true",
  "count_daily": "5",
  "exclude": [
    "/home/**",
    "/root/**"
  ]
}

四、TimeShift 的实际操作流程

1. 创建系统快照

首先执行一次完整快照:

sudo timeshift --create --comments "Initial Snapshot" --tags D

2. 查看已创建的快照

使用以下命令查看当前快照:

sudo timeshift --list

3. 删除旧快照

可以使用 --delete 参数删除旧快照,释放空间:

sudo timeshift --delete --snapshot "Name(时间)"
# 如下:
sudo timeshift --delete --snapshot '2024-11-11_17-23-52'

4. 还原快照

当系统出现问题时,通过还原快照快速恢复:

sudo timeshift --restore --snapshot "Name(时间)"
# 如下:
sudo timeshift --restore --snapshot '2024-11-11_17-23-52'

五、TimeShift 快照操作步骤

下面是详细的备份和恢复步骤。

1. 设置备份目标目录

我们可以通过配置 /etc/timeshift/timeshift.json 中的 backup_device_uuid 来确定备份位置。
通过如下命令可以查看磁盘 UUID

blkid

2. 自定义备份和排除目录

在配置文件中 exclude 参数中可以追加自定义排除的目录:

"exclude": [
  "/home/**",
  "/root/**"
]

3. 开始备份操作

执行一次完整备份:

sudo timeshift --create --comments "Manual Backup"

4. 还原到指定快照

使用 --restore 命令将系统还原至特定快照:

sudo timeshift --restore --snapshot "Name(时间)"
# 如下:
sudo timeshift --restore --snapshot '2024-11-11_17-23-52'

5. 测试 TimeShift 备份还原的效果

我们可以通过安装一个新的软件(如 PHP),来测试 TimeShift 快照的备份与还原是否正常工作:

1. 备份前的系统状态

首先,执行一次完整的系统快照。确保在备份前,系统中还没有安装 PHP,执行以下命令验证:

php --version

若系统返回 “command not found”,说明 PHP 未安装。

现在运行以下命令创建一个快照:

sudo timeshift --create --comments "Pre-PHP Installation Snapshot" --tags D

2. 安装 PHP 并验证

接着,我们通过包管理器安装 PHP:

sudo apt update
sudo apt install php

安装完成后,再次检查 PHP 是否正确安装:

php --version

若显示 PHP 的版本信息,则说明 PHP 安装成功。

3. 还原到快照并验证

现在,我们将系统恢复到安装 PHP 之前的快照状态:

sudo timeshift --restore --snapshot 'Pre-PHP Installation Snapshot'

还原过程完成后,系统将恢复到之前的快照状态。在恢复后会重启系统,以确保所有配置正确应用。

重启后,运行以下命令再次检查 PHP 状态:

php --version

如果系统返回 “command not found”,说明 TimeShift 成功还原了快照,PHP 的安装也一并被移除。

六、总结

TimeShift 在系统故障恢复和状态回滚方面具有显著优势,特别是可以在不影响当前系统使用的情况下,快速创建快照并恢复系统至任意指定状态。本文通过实际操作展示了 TimeShift 的可靠性和操作简便性,使其成为服务器和工作环境下备份与灾难恢复的理想选择。

补充说明:默认不备份的目录与原因

TimeShift 默认会跳过以下一些目录,以确保备份和恢复的效率、空间占用和可靠性:

  • /dev/proc/sys/run:这些目录属于动态、虚拟文件系统。它们包含设备文件、内核和进程信息等。备份这些目录并没有实际意义,因为其内容会在系统启动时自动生成,且不包含持久数据。
  • /tmp:临时文件目录,用于存放短期使用的文件。系统重启后,该目录内容会被清空,备份它没有实际作用。
  • /media/mnt:挂载点目录,主要用于挂载外部存储设备和临时文件系统。备份它们可能会包含无关的外部数据,占用备份空间。

活动目录的备份注意事项

对于一些活动性很强的目录,如 /var/home 下的部分数据(例如数据库和日志文件),TimeShift 也建议谨慎对待:

  • 活动中的数据库或日志文件:例如 /var/lib/mysql 中的数据库文件,通常需要在数据库服务关闭或停止写入时才能进行一致性备份。如果数据库在运行时备份,可能会导致数据不完整或数据不一致问题。
  • 动态生成的日志和缓存:例如 /var/log 中的日志文件和 /var/cache 中的缓存文件。这些内容在系统使用过程中持续变化,备份时会浪费大量存储空间,并且在恢复时不会对系统配置和正常功能产生实际影响。

因此,TimeShift 主要关注系统配置和核心文件,而将频繁更新的活动目录或临时文件排除在备份之外,以优化备份效率和系统稳定性。

TimeShift 非常适合服务器和工作环境的备份和灾难恢复需求。理解这些目录的特性,可以帮助我们更好地使用 TimeShift 进行备份和恢复,确保备份的完整性和有效性。


http://www.kler.cn/a/393955.html

相关文章:

  • Ceph 中Crush 算法的理解
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • 微信小程序=》基础=》常见问题=》性能总结
  • spring中r类是什么
  • BERT配置详解1:构建强大的自然语言处理模型
  • vue3项目中内嵌vuepress工程两种实现方式
  • Android 无签名系统 debug 版本APK push到设备引起的开机异常问题分析(zygote进程)
  • 【青牛科技】14W 高保真音频放大电路——D2030
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • Linux入门:环境变量与进程地址空间
  • [Linux] Linux信号捕捉
  • PostgreSQL加密连接SSL配置
  • linux安装ansible
  • 微信小程序家政项目小程序
  • sqoop Oracle 导入到hive 日期时间消失
  • unity 玩家和炸弹切线计算方式
  • python 爱心邮件代码
  • 二叉树的遍历(手动)
  • 2025年法定节假日日历
  • 【Docker】Docker Compose部署单节点多容器应用
  • 从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111
  • 将python下载的依赖包传到没网的服务器
  • Docker基础概念
  • sentinel服务保护
  • SQL面试题——蚂蚁SQL面试题 会话分组问题
  • 【C语言】指针数组和数组指针的区别