深入探究 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.xdnf.cn/news/13914.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm2024.2.4安装

一、官网下载 1.从下面的链接点进去 PyCharm: The Python IDE for data science and web development by JetBrains 2.进入官网后,下载pycharm安装包 3.点击下载能适配你系统的安装包 4.安装包下载完成 二、安装 1.下载完成后,打开点击右键,打开 2.下一步

【无人机设计与控制】线性和非线性模型预测MPC、NMPC四旋翼无人机轨迹跟踪

摘要 本文研究了四旋翼无人机的线性和非线性模型预测控制(MPC与NMPC)算法在轨迹跟踪中的应用。通过Matlab/Simulink仿真实现了四旋翼无人机在复杂环境中的高效轨迹跟踪。研究结果表明,NMPC比传统MPC在处理非线性动态和外部扰动时具有更好的鲁…

如何用Java爬虫“偷窥”淘宝商品类目API的返回值

在这个数据为王的时代,获取信息就像是在玩一场大型的寻宝游戏。而淘宝,作为电商界的巨人,其商品类目API就像是藏宝图上的秘密标记。今天,我们就来聊聊如何用Java爬虫技术,悄悄地“偷窥”这些宝藏。 准备工作&#xff1…

2024最新网络安全自学路线,内容涵盖3-5年技能提升

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

模拟实现优先级队列

目录 定义 特点 构造函数 常用方法 关于扩容的问题 关于建堆的问题 向上调整和向下调整的比较 (向上调整)代码 (向下调整)代码 关于入队列和出队列问题 模拟实现优先级队列代码 关于堆排序的问题 堆排序代码 关于对…

Django 搭建数据管理web——商品管理

教材: python web 企业级项目开发教程 黑马程序员 5.4 实例1:商品管理 实验步骤: 1.创建项目(任意名字)和应用(goods) 2.在项目文件夹(manage.py文件所在路径)新建te…

C语言中操作符详解(中)

C语言中操作符详解中 放在最前面的1、操作数(Operands)2、单目操作符2.1、分类2.2、举例分析(上代码) 3、关系操作符3.1、分类3.2、举例分析(上代码) 4、逻辑操作符4.1、分类4.2、举例分析(上代…

生成模型——扩散模型(Diffusion Model)

一、扩散模型简介 扩散模型(Diffusion Model)是一种生成模型,主要用于图像生成等任务。它的基本原理源于扩散过程的物理概念,通过最小化去噪过程中的重建损失(通常使用均方误差)来训练模型&#x…

ssm101珠宝首饰交易平台开发+jsp.zip(论文+源码)_kaic

毕业设计(论文) 珠宝首饰交易平台 学 院 专 业 班 级 学 号 用户姓名 指导教师 完成日期 …

关于我、重生到500年前凭借C语言改变世界科技vlog.18——内存函数

文章目录 1. memcpy函数2. memmove函数3. memset函数4. memcmp函数希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 内存函数是用于 操作内存块的一组函数&#xff0c;它们可以对内存进行复制、移动、设置和比较等操作。这些函数主要在 <str…

Redis高可用-主从复制

这里写目录标题 Redis主从复制主从复制过程环境搭建从节点配置常见问题主从模式缺点 Redis主从复制 虽然 Redis 可以实现单机的数据持久化&#xff0c;但无论是 RDB 也好或者 AOF 也好&#xff0c;都解决不了单点宕机问题&#xff0c;即一旦 redis 服务器本身出现系统故障、硬…

NVR设备ONVIF接入平台EasyCVR视频融合平台社会面视频资源接入视频专网,应该如何处理?

在数字化时代&#xff0c;视频监控系统已成为社会安全管理的重要组成部分。随着城市化进程的加速和信息技术的发展&#xff0c;如何有效整合和管理跨区域、跨行业的视频监控资源&#xff0c;成为了提升社会治理能力的关键。 EasyCVR视频融合云平台&#xff0c;作为TSINGSEE青犀…

通过全球最前沿的技术解决视频拼接中时延带来的的应用缺陷,使得全景视频拼接能够真正得以大范围使用和推广的智慧地产开源了。

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…

推荐一款好用的postman替代工具2024

Apifox 是国内团队自主研发的 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;是非常好的一款 postman 替代工具。 它通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好接口文档&#xff0c;接口调试、数据 Mock、接口…

java作业项目以及azkaban的操作

参考内容&#xff1a; azkaban简介及azkaban部署、原理和使用介绍 1.在azkaban创建project 2.上传flow文件和project文件的压缩包 flow文件内容: nodes:- name: Testtype: commandconfig:command: java -jar /data/job/mtm-job-0.0.1-SNAPSHOT.jar --spring.profiles.activ…

【重生之我要苦学C语言】深入理解指针5

深入理解指针5 回调函数 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;被调用的函数就是回调函数 回调函数不是由该函数的实现方直接调用&#xff0c;而是在特定的…

IOPaint模型部署教程

一、介绍 IOPaint是一款功能全面且强大的AI图像处理工具&#xff0c;它不仅免费开源&#xff0c;还由SOTA&#xff08;State-of-the-Art&#xff0c;即最先进&#xff09;AI模型驱动&#xff0c;为图像编辑和修复带来了前所未有的便利和高效。以下是对IOPaint的详细介绍&#…

吊打面试官系列:hashCode() 相同,equals() 就一定相等吗?

在编程的世界里&#xff0c;hashCode() 和 equals() 是一对形影不离的好兄弟。它们在Java中定义于Object类中&#xff0c;是每个Java对象都继承的两个方法。但是&#xff0c;如果你认为只要两个对象的hashCode()相同&#xff0c;它们的equals()就一定相等&#xff0c;那你就大错…

阿托伐他汀降脂疗效与安全性真实世界数据整理!

2024年9月&#xff0c;《中国医疗保险》杂志发布了题为《阿托伐他汀仿制药治疗高脂血症疗效与安全性的多中心回顾性队列研究》的重要研究结果。该研究由首都医科大学宣武医院牵头&#xff0c;联合上海交通大学医学院附属瑞金医院、吉林大学第一医院等10家国内顶尖三甲医院共同完…

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ &#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…