linux实现macos的timeMachine系统备份

news/2025/1/18 15:49:00/文章来源:https://www.cnblogs.com/potatso/p/18678521

在上一篇文章中,我们详细介绍了Btrfs文件系统的基本使用方法和核心原理。本文将重点讲解如何利用Btrfs的特性来实现系统备份功能。

实现原理其实很简单:Linux内核支持直接从Btrfs的子卷(subvolume)启动系统。基于这个特性,我们可以通过计划任务定期为系统根目录创建快照,再配合btrfs-linux自动生成对应的GRUB启动项,从而实现完整的系统备份和恢复功能。

为了简化操作流程,我推荐使用TimeShift或Snapper这类工具。它们提供了图形化界面,让系统备份和恢复变得更加直观和便捷。

准备工作

timeshift需要根子卷(@)以及home子卷(@home)这两个特殊的子卷。但是Ubuntu在默认安装时候并不会创建这两个子卷。所以我们要手工创建一下。

在安装Ubuntu时,强烈建议将/boot目录单独分区。这是因为GRUB在读取grub.cfg配置文件时不支持Btrfs子卷机制。如果不单独分区,当系统挂载到@子卷后,新生成的grub.cfg会位于@子卷的/boot目录下,而不是原始根目录的/boot下,导致GRUB引导配置失效。如果你在安装时未进行单独分区,请不用担心,后续章节会详细介绍解决方案。

在这里默认你已经将ubuntu安装到btrfs中。

步骤:

  1. 创建@子卷。
    sudo btrfs subvolume snapshot / /@
  2. 创建@home子卷
    sudo btrfs subvolume create /@home
  3. 复制home文件夹的内容到@home子卷
    sudo cp -a /home/* /@home
  4. 修改grub,在linux启动参数中新增btrfs子卷
    修改/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT这行追加rootflags=subvol=@
  5. 执行 sudo update-grub更新grub引导
  6. 重启
  7. 修改/etc/fstab,直接原有的 / 挂载上修改,删除subvolid=x字段,如果存在subvol,否则追加subvol=/改成/@。如下所示
/dev/disk/by-uuid/uuid / btrfs defaults,subvol=/@ 0 1
  1. 复制上面一行的内容,将/改成/home ,subvol=/@改成/@home,目的为了挂载@home子卷
/dev/disk/by-uuid/uuid /home btrfs defaults,subvol=/@home 0 1
  1. 重启

Timeshift

首先安装Timeshift
sudo apt install timeshift
按照下一步下一步,开启timeshift备份即可。
在这里插入图片描述

grub备份

下面我们讲解一下,如何将btrfs的备份通过grub-btrfs生成grub参数。

参考安装grub-btrfs
https://github.com/Antynea/grub-btrfs

使用make && make install即可安装。

在安装过程中需要你手动安装inotify。
sudo apt-get install inotify-tools

启动grub-btrfs服务。
sudo systemctl start grub-btrfsd

检查grub-btrfs的服务状态 sudo systemctl status grub-btrfsd
检查一下如果出现这种,就代表设置成功

 grub-btrfsd.service - Regenerate grub-btrfs.cfgLoaded: loaded (/etc/systemd/system/grub-btrfsd.service; disabled; preset:>Active: active (running) since Sat 2025-01-18 15:36:57 CST; 1min 56s agoMain PID: 4862 (bash)Tasks: 3 (limit: 18694)Memory: 1.3M (peak: 4.1M)CPU: 48msCGroup: /system.slice/grub-btrfsd.service├─4862 bash /usr/bin/grub-btrfsd --syslog -t├─4867 bash /usr/bin/grub-btrfsd --syslog -t└─4873 inotifywait -q -q -e create -e delete /run/timeshift

最终在系统启动中的效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871267.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

btrfs文件系统从原理到实践 [1]

作为Linux用户,我经常羡慕macOS系统的Time Machine功能。Time Machine就像是系统的最后一道防线,无论系统发生什么变化,它都能保护我们的数据安全,避免因误操作导致系统无法启动的困境。那么,Linux系统下是否也有类似的解决方案呢?基于这样的需求,我发现了Btrfs文件系统…

常用图像增强算法(MATLAB实现)

1 引言 图像增强是指按照某种特定的需求,突出图像中有用的信息,去除或者削弱无用的信息。图像增强的目的是使处理后的图像更适合人眼的视觉特性或者易于机器识别。在医学成像、遥感成像、人物摄影等领域,图像增强技术都有着广泛的应用。图像增强同时可以作为目标识别,目标跟…

【PE文件结构】导入表

导入表(Import Table)是Windows可执行文件中的一部分,它记录了程序所需调用的外部函数(或API)的名称,以及这些函数在哪些动态链接库(DLL)中可以找到。在PE文件运行过程需要依赖哪些模块,以及依赖这些模块中的哪些函数,这些信息就记录在导入表中。在Win32编程中我们会…

ciscn_2019_es_2(栈迁移)

看一下ida两个read函数都是读取0x30(48),然后s距离ebp有0x28(40),所以虽然有溢出但只溢出了两个4字节,也就是只能覆盖到ebp和ret。 这时候就需要运用栈迁移 栈迁移就是当溢出不够多的时候,这时候可以考虑把栈给迁移去其它地方,利用leave_ret指令控制ebp,使其指向我们…

Nexpose 7.3.0 for Linux Windows - 漏洞扫描

Nexpose 7.3.0 for Linux & Windows - 漏洞扫描Nexpose 7.3.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Jan 15, 2025 请访问原文链接:https://sysin.org/blog/nexpose-7/ 查看最新版。原创作品,转载请保留出处。 作者主页…

ABB机器人3HNE00313-1示教器黑屏故障维修

随着工业自动化的快速发展,ABB机器人示教器在生产线上的应用越来越广泛。然而,在使用过程中,示教器偶尔也会出现故障,其中比较常见的一种是ABB工业机械手示教器黑屏故障。 一、ABB工业机器人示教盒黑屏故障原因分析 1. 硬件故障:硬件故障是导致示教器黑屏的主要原因之一。…

windows双击查看ip

如何方便查看本地电脑的ip? 直接上干货: 1、在桌面右击,新建 => 文本文档; 2、重命令为ip.txt 3、双击打开,输入 ipconfig pause , 然后保存; 4、右击文档,重命令为“ip.bat”;5、再次双击此文档,ip地址就出来了; ps: ipconfig:是系统命令,用于查看ip的地址…

一个日h站的Nday

0x00 前言 今天先来无事的我翻起了qq收藏夹。忽然发现了一个去年EDUSRC群里一个老表发的洞。今天就给大家发出来耍耍。 抵制黄色网站人人有责,打造绿色上网环境。 面对正规网站时候,请不要做非法测试!!! 废话就不多说了。 0x01正文 fofa语句 body="<script type=t…

【触想智能】工业电脑一体机在数控机床设备上应用的注意事项以及工业电脑日常维护知识分享

数控技术的应用不但给传统制造业带来了革命性的变化,使制造业成为工业化的象征,而且随着数控技术的不断发展和应用领域的扩大,它对国计民生的一些重要行业(IT、汽车、轻工、医疗等)的发展起着越来越重要的作用,因为这些行业所需装备的数字化已是现代发展的大趋势。随着数控…

day0java准备

Java-001 Markdown 暂时跳过,vscode里未能实现编译 java 1.已配置环境 2.继续学黑马程序员:已到50/200 3.内存4.学到方法(C里函数)

NB!一款基于java开发的漏洞检测工具,集合了泛微、用友、大华、海康、致远、红帆、万户、帆软等漏洞

1、工具介绍 基于 https://github.com/yhy0/ExpDemo-JavaFX 上添加poc 2、工具下载链接: 工具下载:工具下载 3、新增检测漏洞用友NC-Cloud系统接口getStaffInfo存在SQL注入漏洞 用友U8-Cloud ReleaseRepMngAction存在SQL注入漏洞复现(CNVD-2024-33023) 用友U8-CRM系统getDeptN…

网络购物数据分析

#获取数据 import pandas as pd infor=pd.read_csv(buy_input_1.csv) infor.head(20) #选取预观察数据#方法1 # x1=infor["Annual Income"] # print(x1) # x2=infor["Spending Score"] # print(x2)# """ #方法2 # x1=infor.iloc[:,3] # …