[Share Experiences] 【教程】使用btrfs+timeshift秒级自动快照备份(超简单版本) Resolved
Tofloor
poster avatar
neko
deepin
Ecological co-builder
2023-05-10 01:49
Author

先手动分区安装,分区结构如下:

挂载点 文件系统 大小
efi efi 300MB
/boot ext4 4096MB(也可以用默认大小)
swap swap 与内存大小一致,超过16G内存的可以不要
/ btrfs 剩下的全部

安装完成后进行如下操作:

#创建/@子卷(必须,timeshift需要)

sudo btrfs subvolume snapshot / /@

#创建@home子卷(必须,timeshift需要)
sudo btrfs subvolume create /@home

#复制/home数据到@home
sudo cp -a /home/* /@home

修改/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT这行追加rootflags=subvol=@参数

如下:

# Generated by deepin-installer
GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg"
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet rootflags=subvol=@"
GRUB_DEFAULT=0
GRUB_DISTRIBUTOR="`/usr/bin/lsb_release -d -s 2>/dev/null || echo Deepin 23`"
GRUB_THEME="/boot/grub/themes/deepin/theme.txt"
GRUB_TIMEOUT=1
GRUB_GFXMODE=1024x768
DEEPIN_GFXMODE_DETECT=1

执行 sudo update-grub更新grub引导

然后先重启1次会进入子卷的初始快照,重启后执行下面操作

!!!以下操作重启后进行!!!
!!!以下操作重启后进行!!!
!!!以下操作重启后进行!!!


修改/etc/fstab文件(此时处于@子卷)

直接原有的 / 上修改,删除subvolid=x字段,将原来的subvol=/改成/@

UUID=xxxx-xxxx-xxxx-xxxx / btrfs rw,relatime,ssd,space_cache,subvol=/@ 0 0

复制上一条进行修改,将/改成/home ,subvol=/@改成/@home(注意不能有subvolid=x字段)

UUID=xxxx-xxxx-xxxx-xxxx /home btrfs rw,relatime,ssd,space_cache,subvol=/@home 0 0

再把/boot挂载注释掉(隔离初始的boot分区,如果要升级内核就到 grub菜单 按e删除 rootflags=subvol=@进入原始环境安装新内核后
执行 cp -av /lib/modules/* /@/lib/modules,主要是为了防止不同快照之间安装和卸载内核操作导致找不到内核模块无法进入系统,如果出现这种情况需要复制当前原始环境/lib/modules里面的文件到/@/lib/modules即可)

如图:

image.png

最后再重启,安装timeshift就可以正常开启快照功能了


image.png

timeshift下载地址:https://github.com/teejee2008/timeshift/releases/download/v22.06.1/timeshift_22.06.1_amd64.deb


timeshift_24.01.1_amd64.zip

Reply Favorite View the author
All Replies
2 / 3
To page
neko
deepin
Ecological co-builder
2023-05-10 20:22
#21
Amz

支持,只是boot完全没必要搞成ext4

主要是deepin的安装器还不支持btrfs作为boot,grub版本太低XD

Reply View the author
忘记、过去
deepin
2023-05-10 21:45
#22
neko

主要是deepin的安装器还不支持btrfs作为boot,grub版本太低XD

支持吧?只不过我是先装到 ext4 里面,然后再 rsync 到 btrfs 里面的,把 /boot 也扔进去之后测试可以正常引导的,UOS 和 Deepin 都没啥问题

感觉可以安装的时候把 /boot 放在磁盘后面,然后安装结束后再拷到 btrfs 子卷里,最后调整下分区大小这样子?

Reply View the author
Amz
deepin
2023-05-10 22:57
#23
忘记、过去

支持吧?只不过我是先装到 ext4 里面,然后再 rsync 到 btrfs 里面的,把 /boot 也扔进去之后测试可以正常引导的,UOS 和 Deepin 都没啥问题

感觉可以安装的时候把 /boot 放在磁盘后面,然后安装结束后再拷到 btrfs 子卷里,最后调整下分区大小这样子?

它非要你单独分ext4作为boot,这确实也是,不过不动boot引导可以不动,动了boot引导在grub的眼中,boot目录都跑到了二级目录如/@/boot,这将增加了引导配置的难度。楼主这种方案也轻松利用了btrfs快照,只不过我这最求极致,我都是fat16+swap+btrfs没了,之所以不用swapfile是因为无法休眠。

Reply View the author
忘记、过去
deepin
2023-05-10 23:46
#24
Amz

它非要你单独分ext4作为boot,这确实也是,不过不动boot引导可以不动,动了boot引导在grub的眼中,boot目录都跑到了二级目录如/@/boot,这将增加了引导配置的难度。楼主这种方案也轻松利用了btrfs快照,只不过我这最求极致,我都是fat16+swap+btrfs没了,之所以不用swapfile是因为无法休眠。

之前查 Arch 的教程好像是支持 swapfile 休眠的,我这里照着教程计算了休眠文件偏移量之后,修改 grub 启动配置添加 resume_offset=偏移量 之后就可以休眠了

P.S. 但是 swapfile 一定要比内存大就很伤......

Reply View the author
Amz
deepin
2023-05-11 01:03
#25
忘记、过去

之前查 Arch 的教程好像是支持 swapfile 休眠的,我这里照着教程计算了休眠文件偏移量之后,修改 grub 启动配置添加 resume_offset=偏移量 之后就可以休眠了

P.S. 但是 swapfile 一定要比内存大就很伤......

之前照着弄过,电脑也是疯狂的转,关键文件也是8g,分区也是8g,何必呢,用空间算啦!

Reply View the author
liuyongzhang
deepin
2023-05-11 03:52
#26

image.png
image.png

Reply View the author
希声
deepin
2023-05-11 19:20
#27

楼主没写如何恢复啊,之前用manjaro也是这个方案,没查到出问题了如何恢复或者回滚到某个快照,强烈建议再写一下

Reply View the author
neko
deepin
Ecological co-builder
2023-05-12 03:17
#28
希声

楼主没写如何恢复啊,之前用manjaro也是这个方案,没查到出问题了如何恢复或者回滚到某个快照,强烈建议再写一下

能进桌面就直接timeshift界面选时间点恢复,不能进就ctrl alt f2切换到tty执行timeshift --restore选时间点恢复

Reply View the author
希声
deepin
2023-05-12 21:40
#29
neko

能进桌面就直接timeshift界面选时间点恢复,不能进就ctrl alt f2切换到tty执行timeshift --restore选时间点恢复

收到,v23正式版就用这个方案了,目前开发用的机器v20,跟你分区方案差不多,就多把home也分出来了,所以不确定按你发的,创建子卷。等下次重装v23时候就用你的方案试试

image.png

Reply View the author
希声
deepin
2023-05-24 05:30
#30

根据楼主的方法,设置fstab后,重启后,进不去桌面了,循环回到登陆窗口,(登陆窗口,输入密码后,又回到了登陆页面)

我先装的6.1.11-hwe的内核。

我v23的fstab根楼主截图有区别,就是space_cache=v2,但是我以为是这个问题,等我去到了,直接启动失败了

难道这些回帖的只有我和楼主真正行动了?还是你们都成功了?

Reply View the author
neko
deepin
Ecological co-builder
2023-05-24 14:53
#31
希声

根据楼主的方法,设置fstab后,重启后,进不去桌面了,循环回到登陆窗口,(登陆窗口,输入密码后,又回到了登陆页面)

我先装的6.1.11-hwe的内核。

我v23的fstab根楼主截图有区别,就是space_cache=v2,但是我以为是这个问题,等我去到了,直接启动失败了

难道这些回帖的只有我和楼主真正行动了?还是你们都成功了?

这种情况检查fstab的home挂载是否正确,进tty看看/home目录。感觉是没把原来的home数据复制到新的子卷。

Reply View the author
希声
deepin
2023-05-24 17:52
#32
neko

这种情况检查fstab的home挂载是否正确,进tty看看/home目录。感觉是没把原来的home数据复制到新的子卷。

我看了复制肯定是复制进去了,我担心有问题,还进/@home看了,目录结构是:

/@home/home/pmz/xxx

你一说,我怀疑是不是sudo cp -a的时候,权限被设置成root了,所以出现登陆循环?但是我昨天vm恢复为之前的快照了,没继续排查,一会儿我继续试一下

Reply View the author
neko
deepin
Ecological co-builder
2023-05-24 19:28
#33
希声

我看了复制肯定是复制进去了,我担心有问题,还进/@home看了,目录结构是:

/@home/home/pmz/xxx

你一说,我怀疑是不是sudo cp -a的时候,权限被设置成root了,所以出现登陆循环?但是我昨天vm恢复为之前的快照了,没继续排查,一会儿我继续试一下

这个就是大问题哦,相当于嵌套了一个home,本来是访问/home/user现在变成了/home/home/user。你把home里面的文件复制到@home

Reply View the author
neko
deepin
Ecological co-builder
2023-05-24 19:29
#34
neko

这个就是大问题哦,相当于嵌套了一个home,本来是访问/home/user现在变成了/home/home/user。你把home里面的文件复制到@home

看了一下应该是我教程的问题,应该改成cp -a /home/* /@home

Reply View the author
希声
deepin
2023-05-24 19:39
#35
neko

看了一下应该是我教程的问题,应该改成cp -a /home/* /@home

对,昨天我就犹豫嵌套home对不对,只不过没时间排查😂

刚刚试了,我用的 sudo cp -rp /home/* /@home/ 这个命令,亲测没问题

感谢楼主提供使用btrfs 最简单的方案,之前我就苦苦找deepin使用btrfs+timeshift的备份恢复方案,都没找到,自己又对btrfs快照这块研究的不透,找不到变通方案,这次v23 正好使用这个方案,这次可以随便折腾了,再次感谢

Reply View the author
希声
deepin
2023-05-24 20:42
#36

使用方面有些问题。。。

环境:

内核:6.3.3

timeshift安装好了,配好了btrfs备份方式,home目录不备份(home目录其实备份需求并不大,官方也不推荐home备份,备份根目录就好了)

测试:

我先timeshift创建了一个备份,我也看到这个备份了,然后我在根目录添加了一个新文件,然后点击timeshift恢复,告诉我恢复成功,重启生效(重启之前现有改动会新建一个备份,以便撤销恢复)。但是重启后发现文件依然存在,说明没有恢复之前的备份,说明有问题但不知道问题在哪?

疑问:

  • 是我备份/恢复的做法不对?
  • 使用也有疑问,那我平时是继续正常使用/ 和 /home分区吧,因为配置环境/安装应用,都会在/ /home分区改动,不会去找/@ /@home子卷,所以我不太懂如何正常使用达到我备份恢复的目的
Reply View the author
希声
deepin
2023-05-24 20:57
#37

接上一条

如图,重启后,pmz.md依然存在,说明没有恢复到之前的备份
image.png

我感觉timeshift的恢复也有问题,如图,显示都不正常

image.png

环境都装好了,但是不成功,使用方法也存疑,希望大佬有空帮忙看看呗,你们目前都在使用btrfs做备份恢复方案吧 @落日 @AMZ @风吹过的绿洲 @海水 @俺最萌

Reply View the author
落日
deepin
2023-05-24 22:49
#38
希声

接上一条

如图,重启后,pmz.md依然存在,说明没有恢复到之前的备份
image.png

我感觉timeshift的恢复也有问题,如图,显示都不正常

image.png

环境都装好了,但是不成功,使用方法也存疑,希望大佬有空帮忙看看呗,你们目前都在使用btrfs做备份恢复方案吧 @落日 @AMZ @风吹过的绿洲 @海水 @俺最萌

我还是ext4,没换btrfs,你这个问题我也不知道怎么回答sob

Reply View the author
2023开始学习
deepin
2023-07-01 18:19
#39
希声

接上一条

如图,重启后,pmz.md依然存在,说明没有恢复到之前的备份
image.png

我感觉timeshift的恢复也有问题,如图,显示都不正常

image.png

环境都装好了,但是不成功,使用方法也存疑,希望大佬有空帮忙看看呗,你们目前都在使用btrfs做备份恢复方案吧 @落日 @AMZ @风吹过的绿洲 @海水 @俺最萌

我按这个试了一下,确实有点问题。

少了一步:没有向grub提供参数。grub启动的还是原来的分区的系统,timeshift恢复的分区与系统无关。

修改:/boot/grub/grub.cfg

找到启动项目的这一行:

linux	/vmlinuz-5.15.77-amd64-desktop root=UUID=3d5ffe7e-24ff-4df4-90ef-c5a6fde663d2 ro rootflags=subvol=@ splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE

添加参数:rootflags=subvol=@

Reply View the author
哦豁
deepin
2024-02-02 19:38
#40

非常好的教程,设置成功

Reply View the author
2 / 3
To page