65 lines
2.1 KiB
Bash
Executable File
65 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
||
# 任务名称:工作区Git备份
|
||
# 执行时间:每天 08:00
|
||
# 归属 Agent:xiaoxi
|
||
# 通知对象:李若松(user_id: 4aagb443)
|
||
|
||
set -e
|
||
|
||
export PATH=/root/.nvm/versions/node/v24.14.0/bin:$PATH
|
||
LOG_FILE="/var/log/xiaoxi_daily_backup.log"
|
||
|
||
log() {
|
||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
# 获取飞书token
|
||
get_token() {
|
||
local APP_ID=$(jq -r '.apps[0].appId' /root/.openclaw/credentials/xiaoxi/config.json)
|
||
local APP_SECRET=$(jq -r '.apps[0].appSecret' /root/.openclaw/credentials/xiaoxi/config.json)
|
||
curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"app_id\":\"$APP_ID\",\"app_secret\":\"$APP_SECRET\"}" \
|
||
| jq -r '.tenant_access_token'
|
||
}
|
||
|
||
# 发送文本消息给个人(user_id)
|
||
send_msg() {
|
||
local TOKEN=$1
|
||
local USER_ID=$2
|
||
local TEXT=$3
|
||
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=user_id" \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"receive_id\":\"$USER_ID\",\"msg_type\":\"text\",\"content\":\"{\\\"text\\\":\\\"$TEXT\\\"}\"}" > /dev/null 2>&1
|
||
}
|
||
|
||
log "开始执行工作区备份"
|
||
|
||
# 进入工作区目录
|
||
cd /root/.openclaw/workspace
|
||
|
||
# 确保敏感文件不会被提交到Git
|
||
if ! grep -q "secrets.md" .gitignore 2>/dev/null; then
|
||
echo "secrets.md" >> .gitignore
|
||
echo "*.env" >> .gitignore
|
||
echo "memory/*.private.md" >> .gitignore
|
||
fi
|
||
|
||
# 提交所有变更
|
||
git add .
|
||
git commit -m "🤖 每日自动备份 - $(date +'%Y-%m-%d %H:%M:%S')" || { log "没有新的变更需要提交"; }
|
||
|
||
# 推送到远程仓库
|
||
TOKEN=$(get_token)
|
||
if git push; then
|
||
log "Git推送成功"
|
||
send_msg "$TOKEN" "4aagb443" "✅ 小溪工作区每日备份成功,备份时间:$(date +'%Y-%m-%d %H:%M:%S')"
|
||
else
|
||
log "Git推送失败"
|
||
send_msg "$TOKEN" "4aagb443" "❌ 小溪工作区每日备份失败!请检查Git仓库配置和网络连接,错误时间:$(date +'%Y-%m-%d %H:%M:%S')"
|
||
exit 1
|
||
fi
|
||
|
||
log "备份任务完成"
|