关于Halo备份接口
Halo后台自带一个备份功能,但是只能手动点击备份,而且过期时间只能是7天。每次备份我还需要进入后台手点一次,不够方便。于是我便想着有没有自动备份的方法。
关于鉴权
按照官方文档的方法,可以在后台创建一个令牌或者使用Basic Auth(已弃用)来调取这些api
推荐在权限选项卡只授予备份与恢复管理的权限即可
抓取备份接口
创建备份的接口
登录Halo后台,找到备份选项卡,打开开发者工具,切换到Network,然后点击创建备份按钮,不难发现Halo的创建备份接口,使用刚才创建的令牌调用的方法如下
requests.post(url=f'{domain}/apis/migration.halo.run/v1alpha1/backups',
data='''
{
"apiVersion": "migration.halo.run/v1alpha1",
"kind": "Backup",
"metadata": {
"generateName": "backup-",
"name": ""
},
"spec": {
"expiresAt": "%s"
}
}
''' % time,
headers={'content-type': 'application/json', 'Authorization': f'Bearer {token}'}, timeout=10)其中expiresAt是到期时间,可以自定义成任意时间。
发起请求后,响应如下
{
"spec": {
"expiresAt": "2026-05-10T00:55:24.649Z"
},
"status": {
"phase": "PENDING"
},
"apiVersion": "migration.halo.run/v1alpha1",
"kind": "Backup",
"metadata": {
"generateName": "backup-",
"name": "backup-xxxxxxxx",
"creationTimestamp": "2026-05-03T00:55:24.713046547Z",
"version": 0
}
}获取备份列表的接口(用于检查备份使用创建完成)
在创建备份之后,Halo会循环调用这个接口来检查备份是否完成创建
可以带上page=和size=的query传参来指定页数
requests.get(url=f'{domain}/apis/migration.halo.run/v1alpha1/backups',
headers={'Authorization': f'Bearer {token}'}, timeout=10)响应内容如下
{
"page": 1,
"size": 1000,
"total": 1,
"items": [
{
"apiVersion": "migration.halo.run/v1alpha1",
"kind": "Backup",
"metadata": {
"creationTimestamp": "2026-04-30T16:00:03.095244445Z",
"deletionTimestamp": "2026-05-03T01:16:55.256572135Z",
"finalizers": [],
"generateName": "backup-",
"name": "backup-xxxxxxxx",
"version": 5
},
"spec": {
"expiresAt": "2026-05-03T16:00:02.215Z"
},
"status": {
"completionTimestamp": "2026-04-30T16:00:05.691189748Z",
"filename": "20260501000003-backup-xxxxxxxx.zip",
"phase": "SUCCEEDED",
"size": 37447268,
"startTimestamp": "2026-04-30T16:00:03.138506007Z"
}
}
],
"first": true,
"hasNext": false,
"hasPrevious": false,
"last": true,
"totalPages": 1
}其中phase代表当前备份状态,如果是正在备份则会显示为RUNNING,完成了就是SUCCEEDED
下载备份
携带Authorization发起GET请求
{domain}/apis/console.api.migration.halo.run/v1alpha1/backups/{name}/files/{filename}删除备份
携带Authorization发起DELETE请求
{domain}/apis/migration.halo.run/v1alpha1/backups/{name}