自从入了unraid的坑就一发不可收拾了,目前已经把它作为折腾虚拟机、Docker的主力机器,体验感也非常的好。只是偶尔手贱或莫名的原因会弄崩系统,从此也担心系统U盘会挂掉,如果没有备份的话,重新配置几十个的docker以及虚拟机就只有喊天的命了。于是,我就想给appdata、system、domains三个文件夹和U盘来个定期备份,万一什么时间挂了,还可以宠辱不惊的给它还原回来。
其实呢,官方在u盘界面有一个FLASH备份按钮,如果自己在折腾前记得备份一下,这个功能确实还是很有用的,唯一遗憾的是它没有提供自动备份支持。

如何实现这些关键数据的自动备份方案,经过一段时间的思考,还真让我找到了一条不算复杂的解决之道——借助UnRaid的远程共享文件夹装载(Mount)功能将我的群晖共享文件夹映射为UnRaid的本地文件夹,然后用tar命令打包备份相关数据资料到此共享文件夹即可实现备份,最后再通过UnRaid的User Scripts插件将前述备份命令添加到脚本文件中,并设置定时运行即可。
1.创建并Mount群晖中的备份共享文件夹(本例中为mount)
1.1.在群晖中创建共享文件夹mount
【控制面板】→【共享文件夹】→【新增】,然后按提示填写名称及描述等信息,注意不要勾选蓝色方框中的2个选项,否则在后续UnRaid装载(Mount)共享文件夹的时候是找不到这个文件夹的(不要问我是怎么知道的)

1.2.在UnRaid中装载(Mount)此共享文件夹

根据提示一步步选择在群晖中创建的mount共享文件夹,完成后记得点击挂载按钮,此时就完成了群晖文件夹到unraid的挂载。

2.添加自动备份脚本
2.1.安装User Scripts插件:此处不再赘述,插件安装即可。
2.2.在User Scripts插件添加脚本


创建完成后点击脚本前的小齿轮,选择"EDIT SCRIPT",将下方内容贴入,然后点击"SAVE CHANGES即可。
#!/bin/bash
CUR_TIME=$(date "+%Y%m%d%H%M%S")
BACKUP_FILE="unraid_flash_backup_${CUR_TIME}.tar.gz"
# 将等号后面的路径修改为你自己的备份路径,别忘了最后的/
BACKUP_PATH="/your/back/up/path/"
tar -czvf ${BACKUP_PATH}${BACKUP_FILE} /boot;
保存后可以点击 “RUN SCRIPT” 测试一下备份文件是否成功创建。注意不可关闭运行后的弹窗,否则脚本会中止执行。
举一反三,也许还有更进阶的玩法,思路就是可以结合阿里云的webdav和rclone挂载,将备份包上传至网盘中,并删除过期备份包,避免占用过多网盘空间,这个有需要的话,可以后面再出一篇详细教程。
3.Rescure 系统盘恢复
由于Unraid OS的完整系统都存在U盘中,因此当系统配置出现问题,导致无法进入引导,无法进入GUI界面时,并不会影响阵列!
因此系统盘的恢复,比备份更简单。只需要使用官方的USB制作工具创建一个官方的系统盘,然后将备份包中的config目录完全拷贝至当前的U盘内即可!是不是超级,非常,极其简单和方便!!!
注意,如果U盘更换了,config目录中的"go"文件中的GUID也需要同步修改一下。千万别忘记啦!
评论区