每日备份 2026-06-10 12:57:13
This commit is contained in:
1 parent
fda2ccb8c2
commit
3d2e638c6a
244 files changed
+58890
-3
No files matched your search
+98
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# OpenClaw 配置备份监控脚本
|
||||
# 功能:监控 openclaw.json 变化,自动备份,最多保留10个版本
|
||||
#
|
||||
|
||||
OPENCLAW_CONFIG="/root/.openclaw/openclaw.json"
|
||||
BACKUP_DIR="/root/.openclaw/backups"
|
||||
MAX_BACKUPS=10
|
||||
CHECK_INTERVAL=60 # 每60秒检查一次
|
||||
|
||||
# 确保备份目录存在
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# 获取当前文件的md5
|
||||
get_md5() {
|
||||
md5sum "$OPENCLAW_CONFIG" 2>/dev/null | cut -d' ' -f1
|
||||
}
|
||||
|
||||
# 记录日志
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||
}
|
||||
|
||||
# 备份函数
|
||||
backup_config() {
|
||||
local current_md5=$(get_md5)
|
||||
local timestamp=$(date '+%Y-%m-%d_%H-%M-%S')
|
||||
local backup_file="$BACKUP_DIR/openclaw.json.$timestamp.bak"
|
||||
|
||||
# 复制配置文件
|
||||
cp "$OPENCLAW_CONFIG" "$backup_file"
|
||||
log "已备份: $backup_file (md5: $current_md5)"
|
||||
|
||||
# 清理旧备份,保留最多10个
|
||||
backup_count=$(ls -1 "$BACKUP_DIR"/openclaw.json.*.bak 2>/dev/null | wc -l)
|
||||
if [ "$backup_count" -gt "$MAX_BACKUPS" ]; then
|
||||
# 按修改时间删除最旧的备份
|
||||
old_backups=$(ls -1t "$BACKUP_DIR"/openclaw.json.*.bak | tail -n +$((MAX_BACKUPS + 1)))
|
||||
for old_backup in $old_backups; do
|
||||
rm -f "$old_backup"
|
||||
log "已删除旧备份: $old_backup"
|
||||
done
|
||||
fi
|
||||
|
||||
# 保存当前md5供下次对比
|
||||
echo "$current_md5" > "$BACKUP_DIR/.last_md5"
|
||||
}
|
||||
|
||||
# 主循环
|
||||
main() {
|
||||
log "配置备份监控启动..."
|
||||
|
||||
# 首次运行:备份当前配置
|
||||
if [ -f "$OPENCLAW_CONFIG" ]; then
|
||||
# 检查是否有上次记录的md5
|
||||
if [ -f "$BACKUP_DIR/.last_md5" ]; then
|
||||
last_md5=$(cat "$BACKUP_DIR/.last_md5")
|
||||
current_md5=$(get_md5)
|
||||
|
||||
if [ "$last_md5" != "$current_md5" ]; then
|
||||
log "检测到配置变化,首次备份..."
|
||||
backup_config
|
||||
else
|
||||
log "配置无变化,跳过备份"
|
||||
# 更新md5记录(确保文件存在)
|
||||
get_md5 > "$BACKUP_DIR/.last_md5"
|
||||
fi
|
||||
else
|
||||
log "首次运行,备份当前配置..."
|
||||
backup_config
|
||||
fi
|
||||
else
|
||||
log "错误: 配置文件不存在: $OPENCLAW_CONFIG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 持续监控循环
|
||||
while true; do
|
||||
sleep "$CHECK_INTERVAL"
|
||||
|
||||
if [ ! -f "$OPENCLAW_CONFIG" ]; then
|
||||
log "错误: 配置文件丢失: $OPENCLAW_CONFIG"
|
||||
sleep 60
|
||||
continue
|
||||
fi
|
||||
|
||||
current_md5=$(get_md5)
|
||||
last_md5=$(cat "$BACKUP_DIR/.last_md5" 2>/dev/null)
|
||||
|
||||
if [ "$last_md5" != "$current_md5" ]; then
|
||||
log "检测到配置变化,开始备份..."
|
||||
backup_config
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main
|
||||
Reference in new issue
Block a user