feat: SearXNG 搜索集成 + DevTools Docker + PG 备份 + 文档更新
- web_search 工具/插件接入自托管 SearXNG,支持百度/必应/搜狗/360搜索 - DevTools 加入 docker-compose.dev.yml,devtools/Dockerfile - scripts/pg-backup.sh 数据库备份恢复脚本,docs/pg-backup-migration.md - 后台思考 + datetime 插件时区默认 Asia/Shanghai - docker-compose 对齐 volume 名称,清理 tool-engine 残留引用 - README.md / Deploy.md 更新至当前架构(移除简报/tool-engine,新增搜索/跨端同步/DevTools) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# Cyrene PostgreSQL 备份/恢复
|
||||
# 用法: ./pg-backup.sh backup # 备份到 ./backups/
|
||||
# ./pg-backup.sh restore # 从最新备份恢复
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER="cyrene_postgres"
|
||||
DB="cyrene_ai"
|
||||
USER="cyrene"
|
||||
BACKUP_DIR="$(cd "$(dirname "$0")/../backups" && pwd)"
|
||||
|
||||
backup() {
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
local file="$BACKUP_DIR/cyrene_$(date +%Y%m%d_%H%M%S).sql"
|
||||
echo "正在备份 $DB → $file ..."
|
||||
docker exec "$CONTAINER" pg_dump -U "$USER" -d "$DB" \
|
||||
--no-owner --no-acl --clean --if-exists > "$file"
|
||||
ls -lh "$file"
|
||||
echo "备份完成: $file"
|
||||
|
||||
# 只保留最近 7 个备份
|
||||
local count=$(ls -1 "$BACKUP_DIR"/*.sql 2>/dev/null | wc -l)
|
||||
if [ "$count" -gt 7 ]; then
|
||||
ls -1t "$BACKUP_DIR"/*.sql | tail -n +8 | xargs rm -f
|
||||
echo "已清理旧备份 (保留最近 7 个)"
|
||||
fi
|
||||
}
|
||||
|
||||
restore() {
|
||||
local file
|
||||
if [ -n "${1:-}" ]; then
|
||||
file="$1"
|
||||
else
|
||||
file=$(ls -1t "$BACKUP_DIR"/*.sql 2>/dev/null | head -1)
|
||||
fi
|
||||
if [ -z "$file" ] || [ ! -f "$file" ]; then
|
||||
echo "错误: 找不到备份文件" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "正在从 $file 恢复..."
|
||||
docker exec -i "$CONTAINER" psql -U "$USER" -d "$DB" < "$file"
|
||||
echo "恢复完成"
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
backup) backup ;;
|
||||
restore) restore "${2:-}" ;;
|
||||
*)
|
||||
echo "用法: $0 backup|restore [文件路径]"
|
||||
echo " backup 备份到 $BACKUP_DIR"
|
||||
echo " restore [file] 恢复备份 (默认最新)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user