需启用Btrfs文件系统以支持快照;安装时划分EFI、swap、空Btrfs及ext4根分区;安装后修改initramfs配置删除相关代码。
如果您希望在统信uos系统中实现数据状态的可逆回退与历史版本保留,则需借助文件系统级快照能力。btrfs文件系统原生支持写时复制(cow)机制,允许创建轻量、即时、只读或可写的子卷快照,从而构成系统还原与备份的技术基础。以下是基于btrfs的系统还原与备份操作步骤:
一、启用Btrfs并迁移根文件系统
该步骤确保系统运行于支持快照的Btrfs文件系统之上,为后续快照功能提供底层支撑。未启用Btrfs前,所有快照操作均无法执行。
1、安装系统时仅划分四个分区:EFI系统分区、swap交换分区、一个未挂载的空Btrfs分区(如/dev/sda3)、以及ext4格式的根分区(如/dev/sda4)。
2、系统安装完成后启动进入桌面,使用深度文本编辑器修改initramfs初始化配置:sudo dedit /usr/share/initramfs-tools/init,定位并删除文件中所有出现的
3、执行sudo update-initramfs -u更新初始内存盘,使内核具备加载Btrfs根设备的能力。
4、使用Deepin/UOS安装ISO制作U盘启动介质,重启进入Live环境;按Ctrl+Alt+F2切换至TTY2终端,执行startx启动图形化Live桌面。
5、挂载原ext4根分区与目标Btrfs分区:sudo mount /dev/sda4 /mnt/a && sudo mount /dev/sda3 /mnt/b。
6、在Btrfs分区/mnt/b下创建两个关键子卷:sudo btrfs subvolume create /mnt/b/@ 和 sudo btrfs subvolume create /mnt/b/@home。
二、配置fstab并完成根目录迁移
此步骤将原ext4根系统内容完整迁移至Btrfs子卷,并通过修改fstab实现启动时自动挂载新结构,是系统还原能力落地的关键环节。
1、将原根分区全部内容复制至Btrfs子卷@:sudo rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/a/ /mnt/b/@/。
2、编辑/mnt/b/@etc/fstab文件,替换原有ext4根挂载项为Btrfs子卷挂载项,示例行如下:UUID=xxxx-xxxx / btrfs defaults,subvol=@ 0 1;同时添加home子卷挂载:UUID=xxxx-xxxx /home btrfs defaults,subvol=@home 0 2。
3、卸载所有临时挂载点:sudo umount -R /mnt/a /mnt/b。
4、重启系统并从Btrfs分区引导,验证是否成功进入桌面且df -T /显示类型为btrfs。
三、创建与管理快照
快照是Btrfs子卷的瞬时副本,占用空间极小且创建毫秒级完成,可用于系统状态备份、升级前保护或故障后快速回滚。
1、登录系统后打开终端,确认当前根子卷挂载路径:findmnt -n -o SOURCE /,输出应含subvol=@字样。
2、创建只读快照用于备份:sudo btrfs subvolume snapshot -r / /snapshots/@_$(date +%Y%m%d_%H%M%S)。
3、创建可写快照用于测试环境:sudo btrfs subvolume snapshot / /snapshots/@_test_$(date +%s)。
4、列出全部子卷及快照:sudo btrfs subvolume list -t /。
5、查看某快照详细信息:sudo btrfs subvolume show /snapshots/@_20260204_220000。
四、执行系统还原(回滚到指定快照)
还原操作本质是将根子卷指向另一个已存在的快照,需在非运行状态下操作以避免冲突,因此必须通过Live环境完成。
1、使用UOS安装U盘启动,进入Live桌面后切换至TTY2终端。
2、挂载Btrfs主分区(如/dev/sda3)至/mnt/b:sudo mount /dev/sda3 /mnt/b。
3、列出所有子卷,识别目标快照名称:sudo btrfs subvolume list -t /mnt/b。
4、删除当前活动的@子卷:sudo btrfs subvolume delete /mnt/b/@。
5、将目标快照重命名为@:sudo btrfs subvolume snapshot /mnt/b/@_20260204_220000 /mnt/b/@。
6、卸载并重启:sudo umount -R /mnt/b && sudo reboot。
五、自动化快照策略部署
手动快照易遗漏关键节点,通过定时任务结合脚本可实现升级、安装软件等操作前后的自动快照,构建可靠还原链。
1、创建快照脚本/usr/local/bin/btrfs-snapshot.sh,内容包含子卷判断、时间戳命名与错误检查逻辑。
2、赋予执行权限:sudo chmod +x /usr/local/bin/btrfs-snapshot.sh。
3、编辑root用户的crontab:sudo crontab -e,添加每日快照任务:0 3 * * * /usr/local/bin/btrfs-snapshot.sh daily。
4、为系统更新事件注入快照钩子:在/etc/apt/apt.conf.d/下新建99-btrfs-preupgrade,写入DPkg::Pre-Invoke {"sh -c '/usr/local/bin/btrfs-snapshot.sh pre-upgrade'";};。
5、验证钩子生效:执行sudo apt update后检查/snapshots/目录是否生成带pre-upgrade标识的快照。










