HomeAssistant 使用插件备份

1.安装

集成:Auto Backup
加载项:
Alist https://gitcode.com/waxgourd/addons
Rclone Backup https://github.com/jcwillox/hassio-rclone-backup

2.Alist挂载阿里云网盘

网上有很多教程,比如挂载完得到一个webdav地址为:http://192.168.101.81:5244/dav ,挂载的名称为 AliYunPan

3.配置Rclone

3.1 在/config目录下,新建一个rclone.conf的文件,编辑内容为:

1
2
3
4
[Alist]
type = webdav
url = http://192.168.101.81:5244/dav
vendor = other

url填Alist的webdav地址。

3.2 在加载项页面,修改Rclone配置为

1
2
3
4
5
6
7
8
9
- name: Sync Daily Backups
schedule: 50 3 * * *
command: sync
sources:
- /backup
destination: Alist:/AliYunPan/haos自动备份
include: []
exclude: []
flags: {}

destination填写Alist的挂载的阿里云的路径

3.3 启动加载项,打开 WEB UI,点击左侧菜单栏 Configs,会出现一个Alist的配置,选择 Update。

  • 第一步直接点击Next
  • 第二步填写Alist的webdav的账户密码,如下图,填完继续Next,就配置完成了
  • 这时候再打开3.1那里的rclone.conf文件,就已经自动生成user和pass,pass是加密的
    这样Rclone就配置好了。

4.创建自动备份自动化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
alias: 自动备份
description: 每天晚上3点半,自动备份文件到本地,同时上传到云端
trigger:
- platform: time
at: "03:30:00"
condition: []
action:
- service: auto_backup.backup
data:
name: Automatic Backup {{ now().strftime('%Y-%m-%d') }}
exclude_addons:
- f1549655_koolsmart*
- a0d7b954_zerotier
- 15d21743_samba_backup
- core_mariadb
exclude_folders:
- media
keep_days: 5
mode: single

上面配置文件我排除了几个体积较大的不常用的加载项和media文件夹,这样就完成了,每天3点半系统备份,3点50同步到阿里云盘。

docker直接部署,没有基于ha来备份

注意:
在此之前要使用命令找到自己docker安装位置

1
docker info | grep "Docker Root Dir"

将所有docker volume映射到一个文件夹,定时执行shell备份上传这个文件夹

docker的数据都映射到/usr/mydocker下
webdav挂载跟楼主的方式类似,但是我用的是davfs2
定时运行下面的shell就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 本地目录变量
LOCAL_BACKUP_DIR="/mnt/mydisk/backup/mydocker"
WEBDAV_MOUNT_POINT="/mnt/webdav/aliyun/备份/mydocker"

# 确保本地备份目录存在
mkdir -p "${LOCAL_BACKUP_DIR}"
mkdir -p "${WEBDAV_MOUNT_POINT}"

# 创建今天的备份目录
TODAY=$(date +%Y-%m-%d)

# 压缩/usr/mydocker文件夹,排除photoprism
tar -czvf "${LOCAL_BACKUP_DIR}/backup_${TODAY}.tar.gz" --exclude='/usr/mydocker/photoprism' --exclude='/usr/mydocker/emby2Alist/nginx/embyCache' /usr/mydocker

# 将压缩包拷贝到WebDAV
rsync -ah --progress "${LOCAL_BACKUP_DIR}/backup_${TODAY}.tar.gz" "${WEBDAV_MOUNT_POINT}"

# 在WebDAV目录中删除超过30天的旧备份文件
find "${WEBDAV_MOUNT_POINT}" -name 'backup_*.tar.gz' -type f -mtime +30 -exec rm {} \;

# 在本地备份目录中也删除超过30天的旧备份文件
find "${LOCAL_BACKUP_DIR}" -name 'backup_*.tar.gz' -type f -mtime +30 -exec rm {} \;

自己参考更改的shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 本地目录变量
DOCKER_ROOT_DIR="/mnt/share/docker-lib/docker"
LOCAL_BACKUP_DIR="/mnt/share/mydisk/backup/mydocker"
#WEBDAV_MOUNT_POINT="/mnt/webdav/aliyun/备份/mydocker"

# 确保本地备份目录存在
mkdir -p "${LOCAL_BACKUP_DIR}"
#mkdir -p "${WEBDAV_MOUNT_POINT}"

# 创建今天的备份目录
TODAY=$(date +%Y-%m-%d)

# 压缩/usr/mydocker文件夹,排除photoprism
tar -czvf "${LOCAL_BACKUP_DIR}/backup_${TODAY}.tar.gz" --exclude='${DOCKER_ROOT_DIR}/photoprism' --exclude='${DOCKER_ROOT_DIR}/emby2Alist/nginx/embyCache' ${DOCKER_ROOT_DIR}

# 将压缩包拷贝到WebDAV
#rsync -ah --progress "${LOCAL_BACKUP_DIR}/backup_${TODAY}.tar.gz" "${WEBDAV_MOUNT_POINT}"

# 在WebDAV目录中删除超过30天的旧备份文件
#find "${WEBDAV_MOUNT_POINT}" -name 'backup_*.tar.gz' -type f -mtime +3 -exec rm {} \;

# 在本地备份目录中也删除超过30天的旧备份文件
find "${LOCAL_BACKUP_DIR}" -name 'backup_*.tar.gz' -type f -mtime +30 -exec rm {} \;

相关链接(侵删)

  1. 自动备份到阿里云盘
  2. 查看Docker安装路径

=================我是分割线=================

欢迎到公众号来唠嗑: