家庭网络 篇三:基于Unraid的NAS系统内超轻量级百度云备份
本文所测商品都是自费购入,文章观点都是个人感受,并不会有所偏颇。只是供参考,在购买时还是看个人需求。
之前已经写过两篇文章,第一篇选择了WIFI6路由器,第二篇选了个2.5G软路由,都是硬件相关,这篇主要是深入挖掘一下Unraid的系统使用,做一个轻量级完全静音的24小时运行的NAS系统。并且能满足一些群晖里面常用的功能,这篇是纯Unraid软件系统篇。附上之前的两篇链接。
我个人用NAS主要是用到备份功能和相册功能。如果省事省心,建议买群晖做NAS就够了,里面的可视化备份操作很简单。如果有时间,愿意折腾,也享受折腾的乐趣的话,可以选Unraid或其他虚拟化系统,咱们这个J4125的小主机用的CPU跟群晖DS920+一样的,硬件性能差不多的,价格差好几倍。
目前我找到几种备份的方式:
重量级:安装一个群晖虚拟机,用虚拟机里面的CloudSync百度云备份功能,HyperBackup功能来多硬盘互相备份,不过群晖虚拟机比较占资源,如果是虚拟网卡,甚至会影响Unraid的网络带宽,最好直通网卡给群晖。
轻量级:安装一个bypy的docker,docker是python环境,运行定时百度云备份或者硬盘备份。Docker也占资源。
超轻量级:直接在Unraid中安装python环境,按需运行bypy的python脚本来进行百度云备份。直接运行rsync命令来进行多硬盘互相备份。
我在Unraid中使用的是超轻量级的方式,其实Docker通用性更好,可以用于其他的威联通,铁威马等NAS系统,有兴趣可以自行研究。
插件准备
Unraid最好是能够科学上网,否则装插件和Docker都比较麻烦,需要改Hosts,换镜像地址。这个好多文章都写了,就不赘述了。
1. 开发包 - NerdPack
这个插件可以支持Perl, Python的组件安装,让Unraid原生支持这些语言。还可以支持更多的组件。在应用市场搜索NerdPack即可安装。Perl是用CPU和主板温度监控的插件的前提,主页显示这两硬件的温度。 Python可以装一些开源免费的python脚本。
装好NerdPack后,在Unraid插件中打开Nerd Tools,在Name里面搜索Perl即可找到Perl-v.v.v-x86_64.txz。 安装即可。同理搜索python,可以找到python3和python-pip,装这两个即可。 选择On即可安装。这个NerdPack里面的开发包在有时候升级Unraid系统后可能会出问题,所以升级Unraid后需要卸载干净了再重装。
装好Perl后,再在应用市场安装 Dynamix System Temperature,然后配置一下即可显示CPU和主板温度。
2. 自动脚本 - CA Users Scripts
这个是一个定时运行脚本的插件,可以定时备份Unraid的U盘,定时自动备份重要资料至不同的硬盘,定时上传百度云盘等。应用市场搜索 CA user scripts 即可找到安装。
使用过程
前面装的NerdPack是为了可以运行Python脚本,装CA Users Scripts是为了可以定时运行脚本。
网上有很多CA Users Scripts的脚本教程,这里不再赘述怎么用。我这里定时 00 23 * * 1 运行脚本,即每周一的晚上23点运行脚本一次。
1. 定时备份Unraid系统U盘
#!/bin/bash
##设定需要备份U盘的目标路径。其中Backup1共享目录在第一个硬盘,Backup2目录在第二个硬盘。
dir1=//mnt/user/Backup1/Zip/
dir2=//mnt/user/Backup2/Zip/
##运行Unraid自带的备份U盘命令
echo 'Flash backup'
/usr/local/emhttp/webGui/scripts/flash_backup
##生成的备份文件,都是带flash-backup日期的压缩zip文件。这里去掉symlink
echo ''
echo 'Remove symlink from emhttp'
find /usr/local/emhttp/ -maxdepth 1 -name '*flash-backup-*.zip' -delete
sleep 5
##开始备份
echo 'Backup to other disks'
cp /*-flash-backup-*.zip "$dir1"
sleep 5
mv /*-flash-backup-*.zip "$dir2"
sleep 5
##删除目标硬盘中老的备份,这里删除的是10天前的备份, -MTIME +后面是天数
find "$dir1" -type f -name "*-flash-backup-*.zip" -mtime +10 -exec rm -rfv {} ;
find "$dir2" -type f -name "*-flash-backup-*.zip" -mtime +10 -exec rm -rfv {} ;
##完成提示
echo 'All Done'
2. 定时备份文件至不同的硬盘
这里只是演示,备份时目标可以选择各种硬盘,移动硬盘,远程NFS路径等。
#设定备份目标路径。其中Backup1共享目录在第一个硬盘,Backup2目录在第二个硬盘。
dir1=//mnt/user/Backup1/Zip/
dir2=//mnt/user/Backup2/Zip/
#运行rync将Data目录备份至两个硬盘, 这里命令行表示两边保持同步,如果Data里面删了某子文件,远程的目录也会删掉。完全同步的备份。
rsync -av --delete-after /mnt/user/Data "$dir1"
rsync -av --delete-after /mnt/user/Data "$dir2"
3. 定时备份至百度云
这里主要使用的百度云备份脚本就是bypy的python脚本。bypy在Github上是开源的。
bypy需要前期做一些配置准备,可以打开Unraid的命令行,输入如下命令,设定好命令行运行环境。
export PYTHONPATH=/mnt/user/appdata/python/lib64/python3.9/site-packages:$PYTHONPATH
export PATH=/mnt/user/appdata/python/bin:$PATH
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
输入如下命令安装bypy。我装的是python3.9版本,bypy是1.6.10版本。如下命令会将bypy安装至appdata目录,这个目录是共享目录,专门放应用数据的地方。这样即使重启Unraid也不会丢失bypy。如果没有--prefix指定目录,安装后重启Unraid会丢失bypy。
python3.9 -m pip install --prefix /mnt/user/appdata/python bypy==1.6.10
装好bypy,预先在 /mnt/user/appdata/python目录下建好config目录,否则会运行失败,然后运行如下命令
python3.9 -m bypy info --config-dir /mnt/user/appdata/python/config
这个info参数将会第一次连接百度云网盘,并且会出现获取授权码的链接。
建议预先网页登陆好百度盘,鼠标点击上面命令行里面的链接,将会打开百度的网页,获取到授权码,将授权码拷贝粘贴到命令行里面回车即可。
成功的话将会连接并获取到百度盘空间大小。
获取的授权信息将会存入config目录。可以看到里面多了几个json文件。 第一次运行才需要授权,如果授权过了,授权信息已存入config目录,后面就不需要做这个动作了。脚本直接无人值守运行即可。
以上已经装好了bypy包并且已经配置好了授权。
输入如下命令即可同步百度盘, syncup是将appdata同步到百度盘上去,使用的刚才的config配置授权。这种命令行方式很灵活,可以任意配置目录,任意组合配置多个百度盘的账号,多账号存到不同路径的config目录即可。 bypy syncup 支持3个参数 localdir remotedir deleteremote , 分别表示本地路径,远程百度云路径,0表示不删除远程数据,即本地删掉了,百度云里面的也不会删。
python3.9 -m bypy syncup /mnt/user/appdata /appdata 0 --config-dir /mnt/user/appdata/python/config
运行可以看看结果,数据多可能要点时间。 在命令行运行无误后即可创建定时CA User Script脚本。脚本内容如下:
# 同步至百度盘,设置环境,支持脚本以及中文
export PYTHONPATH=/mnt/user/appdata/python/lib64/python3.9/site-packages:$PYTHONPATH
export PATH=/mnt/user/appdata/python/bin:$PATH
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
# 安装bypy的命令,只需要装一次,这里可以加#注释掉留做以后升级或迁移再用。
# python3.9 -m pip install --prefix /mnt/user/appdata/python bypy==1.6.10
python3.9 -m bypy info --config-dir /mnt/user/appdata/python/config
# 开始百度云备份
python3.9 -m bypy syncup /mnt/user/appdata /appdata 0 --config-dir /mnt/user/appdata/python/config
python3.9 -m bypy syncup /mnt/user/Data/Joplin /Data/Joplin 0 --config-dir /mnt/user/appdata/python/config
后面的备份目录可以按需增加。备份好的文件将存在百度盘的我的应用数据/bypy目录下。
总结
总体来说,这个Unraid系统比起群晖,NAS功能使用起来没有群晖方便,需要自己想办法安装各种软件和插件,也缺乏各种自带的手机应用。没有群晖的软件自成生态,用起来比较简便,用完Unraid更觉得群晖果然还是买软件送硬件的公司,软件比硬件好。
但是群晖的虚拟化功能不够强,目前不知道如何直通网口,硬盘等。所以为了装软路由,为了网速高,只能用Unraid等系统。这样就没了方便的群晖百度云备份了。还好这里可以使用bypy代替,可以做到一样的百度云备份功能,而且是超轻量级备份,平时都不会运行,只有在定时的情况下,运行一下python脚本备份一下,非常省资源。
geekbb520
校验提示文案
值友5341411973
校验提示文案
练习时长三年的工读生
校验提示文案
不辣的啤特
命令最后少了一个\ ,所以这一行是运行不起的
正确的是:find ... rm -rfv {} \;
校验提示文案
王堡垒
校验提示文案
值友7252509095
校验提示文案
不辣的啤特
校验提示文案
不辣的啤特
命令最后少了一个\ ,所以这一行是运行不起的
正确的是:find ... rm -rfv {} \;
校验提示文案
不辣的啤特
校验提示文案
值友5341411973
校验提示文案
值友7252509095
校验提示文案
练习时长三年的工读生
校验提示文案
王堡垒
校验提示文案
geekbb520
校验提示文案