initial backup 2026-03-31 11:01:23
This commit is contained in:
parent
2e2c647b48
commit
c8c3f2fb11
@ -2,11 +2,21 @@
|
|||||||
## 功能说明
|
## 功能说明
|
||||||
自动将OpenClaw workspace内容定期备份到Git仓库,自动过滤敏感信息,无硬编码凭证。
|
自动将OpenClaw workspace内容定期备份到Git仓库,自动过滤敏感信息,无硬编码凭证。
|
||||||
## 特性
|
## 特性
|
||||||
|
- ✅ 全流程自动化,无需手动提前创建Git仓库
|
||||||
- ✅ 自动排除密钥、密码等敏感文件(secrets.md、.env、*.key等)
|
- ✅ 自动排除密钥、密码等敏感文件(secrets.md、.env、*.key等)
|
||||||
- ✅ 内置公司Git服务(git.valavala.com)支持,无需额外配置地址
|
- ✅ 内置公司Git服务(git.valavala.com)支持,无需额外配置地址
|
||||||
- ✅ 支持自定义定时备份时间
|
- ✅ 支持自定义定时备份时间
|
||||||
- ✅ 敏感信息通过参数传入,不存储在skill代码中
|
- ✅ 敏感信息通过参数传入,不存储在skill代码中
|
||||||
- ✅ 自动生成备份日志,便于排查问题
|
- ✅ 自动生成备份日志,便于排查问题
|
||||||
|
## 完整执行流程
|
||||||
|
1. 检查传入的Git Token是否有效
|
||||||
|
2. 自动检查对应Git仓库是否存在,不存在则调用API自动创建
|
||||||
|
3. 初始化本地Git仓库(如果未初始化)
|
||||||
|
4. 配置.gitignore敏感文件过滤规则
|
||||||
|
5. 配置Git用户信息和远程仓库地址
|
||||||
|
6. 首次提交并推送所有非敏感文件
|
||||||
|
7. 创建备份执行脚本和日志目录
|
||||||
|
8. 添加定时任务到系统crontab,按指定时间自动执行备份
|
||||||
## 配置参数
|
## 配置参数
|
||||||
| 参数名 | 类型 | 必填 | 说明 |
|
| 参数名 | 类型 | 必填 | 说明 |
|
||||||
|--------|------|------|------|
|
|--------|------|------|------|
|
||||||
|
|||||||
@ -6,6 +6,32 @@ GIT_USERNAME="$2"
|
|||||||
GIT_EMAIL="$3"
|
GIT_EMAIL="$3"
|
||||||
GIT_REPO_URL="${4:-https://git.valavala.com/${GIT_USERNAME}/ai_member_${GIT_USERNAME}.git}"
|
GIT_REPO_URL="${4:-https://git.valavala.com/${GIT_USERNAME}/ai_member_${GIT_USERNAME}.git}"
|
||||||
CRON_SCHEDULE="${5:-30 8 * * *}"
|
CRON_SCHEDULE="${5:-30 8 * * *}"
|
||||||
|
# 自动创建Git仓库(如果不存在)
|
||||||
|
REPO_NAME="ai_member_${GIT_USERNAME}"
|
||||||
|
echo "🔍 检查Git仓库是否存在: $REPO_NAME"
|
||||||
|
REPO_CHECK=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $GIT_TOKEN" "https://git.valavala.com/api/v1/repos/$GIT_USERNAME/$REPO_NAME")
|
||||||
|
if [ "$REPO_CHECK" -eq 404 ]; then
|
||||||
|
echo "🆕 仓库不存在,自动创建中..."
|
||||||
|
CREATE_RESPONSE=$(curl -s -X POST "https://git.valavala.com/api/v1/user/repos" \
|
||||||
|
-H "Authorization: token $GIT_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"name\": \"$REPO_NAME\",
|
||||||
|
\"private\": false,
|
||||||
|
\"description\": \"${GIT_USERNAME} workspace 备份\",
|
||||||
|
\"auto_init\": false
|
||||||
|
}")
|
||||||
|
if echo "$CREATE_RESPONSE" | grep -q '"id":'; then
|
||||||
|
echo "✅ 仓库创建成功: https://git.valavala.com/$GIT_USERNAME/$REPO_NAME"
|
||||||
|
else
|
||||||
|
echo "❌ 仓库创建失败: $CREATE_RESPONSE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ "$REPO_CHECK" -eq 200 ]; then
|
||||||
|
echo "✅ 仓库已存在,跳过创建"
|
||||||
|
else
|
||||||
|
echo "⚠️ 仓库检查失败,HTTP状态码: $REPO_CHECK,继续执行配置"
|
||||||
|
fi
|
||||||
WORKSPACE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
WORKSPACE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
||||||
# 初始化Git仓库
|
# 初始化Git仓库
|
||||||
cd "$WORKSPACE_DIR"
|
cd "$WORKSPACE_DIR"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user