请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1731|回复: 24

[基础教程] HA定时自动备份到百度网盘、阿里网盘(手把手教程)

[复制链接]

2

主题

93

帖子

621

积分

高级会员

Rank: 4

积分
621
金钱
518
HASS币
40
发表于 2021-10-21 11:34:57 | 显示全部楼层 |阅读模式
本帖最后由 muxiachuixue 于 2021-11-5 12:02 编辑


一、前言
辛苦折腾大半年的HA,因内存卡/硬盘坏掉,所有配置全部丢失?不留云端备份是很冒险的做法,所以定期云端自动备份,显得尤为重要。
论坛此前已有大神发过相关帖子,本人写了一个一键的shell脚本,可同时支持百度网盘、阿里网盘,脚本依赖于百度网盘工具 bypy 和阿里网盘工具 aliyunpan-cli,感谢原作者。
脚本支持所有版本的homeassistant(Hassos/Supervised or Hassio/Core/Container);Core/Container版本备份的是/config (宿主机中的homeassistant)文件夹
如需备份到NAS,请参考Samba BackupRemote Backup (uses scp)

脚本可实现/支持的功能:
1. 定时自动备份HA,支持设置备份密码
2. 可设置保留的备份个数,自动清理最早的多余备份
3. 支持备份到百度网盘、阿里网盘,可自由选择
4. 自动修改备份后的文件名,以时间命名,更方便管理
5. 本地备份后,自动同步到网盘,只确保本地备份上传到网盘,不会删除本地和网盘中不同文件名的文件
6. 如果上一次上传到网盘失败(如只上传了一半),下次同步时会继续上传,直到网盘和本地备份文件Hash值完全一致,这样可以确保每个云端备份都有效

二、安装百度网盘工具
1. 配置科学网络环境(已满足条件的跳过此步)
bypy的授权需要连接到外部服务器,国内无法直连,授权一次,以后就不需要科学环境了
这里提供一个简单的临时方案(不提供下载地址):
gitee下载某灯(天空色)客户端(有免费流量),安装到windows电脑(需要和HA在同一个局域网),windows设置全局代理,记录下windows上http代理的局域网IP和端口,在linux宿主机上/etc/profile文件中加入
export http_proxy=YOUR_PROXY_IP:PORT
export https_proxy=YOUR_PROXY_IP:PORT
宿主机上执行
source /etc/profile
重启宿主机网络(以下命令任选一个)
sudo /etc/init.d/networking restart
sudo service network restart
sudo /etc/init.d/network restart
注意,如果不需要代理了,要在/etc/profile 文件中删除或注释掉proxy的两行,再执行source /etc/profile,再重启网络,否则linux无法上网!
宿主机上测试科学环境
curl google.com

2. 安装bypy
宿主机上执行以下命令(不要在docker里面执行
pip3 install bypy
宿主机上执行以下命令
bypy info
会返回一个链接,复制到浏览器打开,得到一个授权码,按terminal中的提示填入,等待授权成功
测试是否安装好,宿主机上执行
bypy info
若返回网盘的空间信息,则表示安装成功,成功后记得删除linux上的代理!

3. bypy添加到环境变量
我出现过几次系统提示找不到bypy命令的情况(原因未知),重启系统后又好了,为防止备份失败,最好把bypy路径加入环境变量
宿主机执行
which bypy
把返回的路径添加到宿主机上/etc/profile文件,比如我的是:
# PATH for baidu yunpan
export PATH=$PATH:/home/pi/.local/bin
上面/home/pi/.local/bin是我的路径地址,如果你的不是这个,记得修改
保存后再执行
source /etc/profile

三、安装阿里网盘工具

没阿里网盘的可注册一个,目前上传下载不限速:注册地址

1. 安装
宿主机执行
pip3 install aliyunpan

2. 配置与登录
查看命令位置:
which aliyunpan-cli
假设返回:/home/pi/.local/bin/aliyunpan-cli
将路径加入系统环境变量:
sudo nano /etc/profile
加入如下代码
# PATH for  aliyunpan-cli
export PATH=$PATH:/home/pi/.local/bin
其中/home/pi/.local/bin是我的路径,如果你的不是,请修改

根据github项目地址中的教程,登录自己的阿里云网盘账号并获取到refresh token,回到宿主机终端,输入:
echo "refresh_token: 'xxxxx'"  >  ~/.config/aliyunpan.yaml
其中xxxxx是你的refresh token,注意单引号和双引号,不要弄错

再在宿主机终端中输入
aliyunpan-cli tree
如果返回的信息中包含root,则表示登录成功

3. 自动刷新token
宿主机执行:
crontab -e
添加如下代码
# aliyunpan refresh token update
*/30 * * * * /home/pi/.local/bin/aliyunpan-cli token -r
表示每30分钟刷新一次refresh token,其中 /home/pi/.local/bin/是aliyunpan-cli命令的路径,可用which aliyunpan-cli 查看,如果你的不是此路径,请修改
记住,一定要带上命令的路径,否则无法运行成功


三、配置自动备份脚本
1. 修改自定义配置
下载脚本文件ha_atuo_backup.sh,把文件放入到宿主机任意位置,比如/home/pi 目录
(20211105更新v1.2.4:自动生成的备份文件名包含了HA的版本号)
(20211029更新v1.2.3:阿里网盘同步后不会覆盖云端文件修改时间,要配合最新版aliyunpan-cli使用:pip3 install aliyunpan --upgrade
(20211028更新v1.2.2:百度网盘支持自定义远程备份路径,修复了一些其他小问题)
(20211027更新v1.2.1:修复了百度网盘上传日志文件报错的bug)
(20211026更新v1.2.0:修复了crontab 定时任务找不到网盘命令的bug)
ha_auto_backup_v1.2.4.rar (3.11 KB, 下载次数: 16)       
打开脚本,自定义设置:
cd /home/pi
sudo nano ha_atuo_backup.sh

自定义配置

自定义配置


ha_path:检查 HA主目录 ha_path 文件夹路径是不是/usr/share/hassio/homeassistant,如果不是,修改成自己的(core/container版本用户必改)可在宿主机上执行如下命令查看HA主目录:
sudo find / -name .HA_VERSION 2>/dev/null | grep -o '/.*/'
new_backup:是否创建新备份,默认为"yes",如果改为"no"则不会在本地创建新的备份
backup_password:备份密码如果是默认值no_password,则无备份密码;可自行修改备份密码
number_of_files_to_keep_local:默认保留5个最新备份,删除多余的较早备份,可自定义修改保留备份数
upload_baiduyun:是否上传到百度网盘,默认为"yes",如果改为"no"则不会将备份上传到百度网盘
upload_aliyun:是否上传到阿里网盘,默认为"yes",如果改为"no"则不会将备份上传到阿里网盘
baiduyun_backup_remote_path:百度网盘远程备份路径,默认为/homeassistant_backup,可去掉此行注释进行修改
aliyun_backup_remote_path:阿里网盘远程备份路径,默认为/homeassistant_backup,可去掉此行注释进行修改

2. 手动运行验证
手动运行一下脚本,看看有无报错(如果backup文件夹中已有备份,且超过5个,会自动删除多余的备份,请务必修改保留的备份数后再执行脚本
sh ha_auto_backup.sh
日志文件可在backup文件夹下查看:auto_backup.log

3. 检查是否备份成功
HA页面,supervisor-备份(只有Hassio/Hassos版本用户才能看到):

备份

备份


百度网盘-我的应用数据(apps)-bypy文件夹:

百度网盘

百度网盘


阿里网盘-/homeassistant_backup/backup

阿里网盘

阿里网盘


四、设置定时备份:
可利用crontab任务设置自动定时备份,宿主机执行
crontab -e
添加如下代码可实现每天凌晨2点自动备份(建议将备份时间设置为凌晨,不占用网速)
# HA auto backup
0 2 * * * bash -lc 'sh /home/pi/ha_auto_backup.sh'
其中/home/pi/ha_auto_backup.sh 路径请自行修改成你自己的注意bash -lc 不能少,否则可能找不到命令路径;其他定时任务自行百度

完,任何问题可以留言~






评分

参与人数 6金钱 +86 HASS币 +20 收起 理由
firewater + 8 论坛有你更精彩!
jyz_0501 + 20 我也是吃过一次亏,硬盘挂了。之前用nextcl.
+ 20 + 20 感谢楼主分享!
sirakawa + 10 厉害了word楼主!
anlong + 16 论坛有你更精彩!
咸味土豆 + 12 又如滚滚黄河之水,一发不可收拾…….

查看全部评分

回复

使用道具 举报

2

主题

93

帖子

621

积分

高级会员

Rank: 4

积分
621
金钱
518
HASS币
40
 楼主| 发表于 2021-10-21 11:58:57 | 显示全部楼层
本帖最后由 muxiachuixue 于 2021-10-21 19:19 编辑

已支持core/container版本HA自动备份
回复

使用道具 举报

6

主题

226

帖子

1017

积分

金牌会员

Rank: 6Rank: 6

积分
1017
金钱
791
HASS币
0
发表于 2021-10-21 12:13:09 | 显示全部楼层
求阿里网盘的,之前一直想要这个教程,感恩楼主
折腾精神永存,感恩感谢论坛每一位愿意分享的大佬
回复

使用道具 举报

5

主题

153

帖子

1298

积分

论坛技术达人

积分
1298
金钱
1125
HASS币
80
发表于 2021-10-21 20:34:35 | 显示全部楼层
如此详细,必须支持下
小米MIoT插件:miot-spec.com
回复

使用道具 举报

2

主题

93

帖子

621

积分

高级会员

Rank: 4

积分
621
金钱
518
HASS币
40
 楼主| 发表于 2021-10-22 10:04:26 | 显示全部楼层
jjcs 发表于 2021-10-21 12:13
求阿里网盘的,之前一直想要这个教程,感恩楼主

阿里网盘我没用过。你可以把脚本里面用百度网盘备份的命令改成阿里网盘的
回复

使用道具 举报

6

主题

226

帖子

1017

积分

金牌会员

Rank: 6Rank: 6

积分
1017
金钱
791
HASS币
0
发表于 2021-10-22 16:22:15 | 显示全部楼层
hassos要咋弄
折腾精神永存,感恩感谢论坛每一位愿意分享的大佬
回复

使用道具 举报

2

主题

93

帖子

621

积分

高级会员

Rank: 4

积分
621
金钱
518
HASS币
40
 楼主| 发表于 2021-10-22 19:10:50 | 显示全部楼层

已支持阿里云,等我更新吧
回复

使用道具 举报

6

主题

226

帖子

1017

积分

金牌会员

Rank: 6Rank: 6

积分
1017
金钱
791
HASS币
0
发表于 2021-10-23 09:13:58 | 显示全部楼层
muxiachuixue 发表于 2021-10-22 19:10
已支持阿里云,等我更新吧

论坛有你更精彩,分享有你更精彩
折腾精神永存,感恩感谢论坛每一位愿意分享的大佬
回复

使用道具 举报

4

主题

242

帖子

1403

积分

金牌会员

Rank: 6Rank: 6

积分
1403
金钱
1161
HASS币
0
发表于 2021-10-23 11:27:59 | 显示全部楼层
大佬,真给力
回复

使用道具 举报

5

主题

262

帖子

1796

积分

金牌会员

Rank: 6Rank: 6

积分
1796
金钱
1524
HASS币
50
发表于 2021-10-25 15:10:44 | 显示全部楼层
如果科学上网了,还可以用Home Assistant Google Drive Backup,感觉更方便些
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2021-12-2 14:46 , Processed in 0.150990 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表