利用webdav和rclone,两行命令轻松实现自动定时备份你unraid的u盘和appdata等系统文件夹!
使用需求
使用unraid这么久以来,体验感很好,只是偶尔手贱会弄崩系统,如果没有备份的话,重新配置一整页几十个的docker以及虚拟机着实有些吃力。于是,我给appdata、system、domains三个文件夹放到了固态cache上还不放心,两张固态cache组了raid1。系统内docker和虚拟机的配置是保住了,又开始担心u盘哪天不知道会挂掉。
之前群友就有说,为什么unraid不能出一个功能,即两个盘互为备份呢?期待unraid出这个功能不知道猴年马月,倒不如自己想想办法怎么备份u盘中/boot文件的内容。
官方在u盘界面有一个FLASH备份按钮,我感觉可有可无,你总不可能预感到某天自己的unraid要宕机了先备份一下!但是自己在折腾前备份一下,这个功能确实是很有用。
unraid自带的备份按钮
我下面介绍一种利用rclone将你本地文件夹备份到你挂载webdav云盘的方法,填到User Scripts插件中可以实现自动定时备份!不仅能备份 u盘内容,任何unraid的文件夹其实都能通过这个方法来备份到云盘。
备份效果展示
我用的是阿里云盘,其实你能挂载的任何云盘,理论上都是可以的。
利用User Scripts插件自动执行任务
阿里云中的备份
User Scripts跑完任务,我的阿里云盘就出现了这个备份文件,每次运行任务会自动覆盖。
配置过程
配置前,本文默认你已经配置好了webdav,将你的网盘挂载到了webdav软件上,我这里使用的是alist这个docker软件挂载我的阿里云盘到webdav上的,你可以选择你自己喜欢的webdav软件,这里没有要求。
首先打开unraid,去apps市场安装rclone,插件版。
插件版
安装完成就可以打开unraid自带终端,输入rclone config开始配置。
输入n,新建一个remote,取个名字,随便填就行。我已经添加阿里云盘了,这里用百度云盘来举个栗子。
新建一个remote
然后选到40,webdav;url填一下你webdav的路径,比如我填内网的webdav路径就行了;vendor选到5。
选择远程连接的类型
然后填一下你的user和password,就是你webdav的账号密码。
填你的账号密码
后面一路回车,到最后按q退出,就算是设置好了。
按q退出就行了
测试一下百度云webdav有没有被rclone挂载成功,使用这个rclone ls命令,
rclone ls baiduyun:百度云盘里面的某个文件夹
效果如下,能列出了我百度云中music文件夹下的歌,那就是成了。
rclone ls
我在unraid本地新建了一个backup文件夹,路径为/mnt/user/data/backup,又新建了一个boot文件夹,我计划把/boot目录打包放到/mnt/user/data/backup/boot这个目录下,命令为:
tar -czvf /mnt/user/data/backup/boot/boot.tar.gz /boot
跑完,在我/mnt/user/data/backup/boot出现了boot.tar.gz这个文件。
再使用rclone copy命令将本地/mnt/user/data/backup/boot的boot.tar.gz文件复制到百度云盘,
rclone copy /mnt/user/data/backup/boot/boot.tar.gz baiduyun:unraid_backup
跑完,在我百度云盘的unraid_backup文件夹下也出现了boot.tar.gz这个文件。
最后,我们添加一下自动脚本。
打开User Scripts插件,两行代码合成一条,用 && 连接,就是:
tar -czvf /mnt/user/data/backup/boot/boot.tar.gz /boot && rclone copy /mnt/user/data/backup/boot/boot.tar.gz aliyun:unraid_backup
然后再设置一下每周跑一次,可以实现每周自动备份。
User Scripts
完结撒花~
不光是/boot文件夹,同理,appdata文件夹已经其他的文件夹都可以用这个方法来备份,主要用到的rclone软件也有其他的妙用。
这下不怕我的u盘坏掉了
进阶教程
考虑到评论区小伙伴说加密的事情,特地找了值得买小编,申请重新编辑一下图文内容,追加下面部分。
因为不放心存在某度云盘或者某里云盘,想要加密打包内容,跟着下面走就是了。
tar打包命令,加密其实很方便,如下,简单修改之后,对文件进行了加密,并且我增加了时间戳,是不是更方便了
打包
命令如下,其中password可以修改为自己的密码
tar -czvf - /boot | openssl des3 -salt -k password | dd of=/mnt/user/data/backup/boot/boot-$(date +"%Y-%m-%d").tar.gz
如需解压也很简单,cd到对应的备份保存目录下,输入:
openssl des3 -d -k password -salt -in 你的文件.tar.gz | tar xzvf -
具体文件名称自行修改,如下图。
解压
解压前后:
解压前
解压后
现在功能是不是比unraid自带备份插件要强了呢~其实不仅加密、时间戳,甚至我能想到的是每次备份之后通过server酱或者bark或者企业微信给你发送备份完成通知等,完整做起来应该会是和很好的小脚本
先到这里,拜拜~
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
蓝F0X狐
校验提示文案
欲仙欲死
校验提示文案
阿靖SJ
校验提示文案
Adkkf
校验提示文案
不辣的啤特
校验提示文案
值友5341411973
校验提示文案
螃蟹八只半
校验提示文案
thankU4help
校验提示文案
弯弯0128
校验提示文案
一起听窗外的雨
调用系统备份flash那个脚本就行
fname=$(/usr/local/emhttp/webGui/scripts/flash_backup)
if [ -f /$fname ]; then
cp /$fname /mnt/disks/ali/unraidflash/
if [ $? ];then
echo '上传成功'
else
echo '上传失败'
fi
rm -f /$fname /usr/local/emhttp/$fname
fi
校验提示文案
一起听窗外的雨
挂载本地目录命令
校验提示文案
redcats
校验提示文案
wmgylc
校验提示文案
值友3033245735
校验提示文案
别比比了我知道我很帅
校验提示文案
卡卡妖
校验提示文案
值友1334107120
校验提示文案
阿靖SJ
校验提示文案
aboutme
校验提示文案
值友1590940412
校验提示文案
Bloodstream
校验提示文案
值友1334107120
校验提示文案
值友2781135470
校验提示文案
皮蛋八宝粥
校验提示文案
卡卡妖
校验提示文案
shanehua
然后unraid系统一直报错:Jun 27 16:38:06 HUA-Server emhttpd: error: share_luks_status, 6151: Operation not supported (95): getxattr: /mnt/user/aliyundriver1,每秒一条。但是我使用挺正常的,请问是什么原因吗?或者能关掉报错吗?
校验提示文案
蓝F0X狐
说文件太大,我也只是上传备份的/boot文件。
校验提示文案
蓝F0X狐
校验提示文案
wisharp
校验提示文案
山遥路远
校验提示文案
山遥路远
校验提示文案
值友3646908204
校验提示文案
别比比了我知道我很帅
校验提示文案
别比比了我知道我很帅
校验提示文案
值友3033245735
校验提示文案
wmgylc
校验提示文案
阳光的少昊
校验提示文案
redcats
校验提示文案
一起听窗外的雨
挂载本地目录命令
校验提示文案
一起听窗外的雨
调用系统备份flash那个脚本就行
fname=$(/usr/local/emhttp/webGui/scripts/flash_backup)
if [ -f /$fname ]; then
cp /$fname /mnt/disks/ali/unraidflash/
if [ $? ];then
echo '上传成功'
else
echo '上传失败'
fi
rm -f /$fname /usr/local/emhttp/$fname
fi
校验提示文案