linux实现macos的timeMachine系统备份

在上一篇文章中,我们详细介绍了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.cfg
     Loaded: loaded (/etc/systemd/system/grub-btrfsd.service; disabled; preset:>
     Active: active (running) since Sat 2025-01-18 15:36:57 CST; 1min 56s ago
   Main PID: 4862 (bash)
      Tasks: 3 (limit: 18694)
     Memory: 1.3M (peak: 4.1M)
        CPU: 48ms
     CGroup: /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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蛋黄哌

帮我买杯奶茶把

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值