vault backup: 2026-02-26 21:10:47
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ENV_FILE="$SCRIPT_DIR/../../.env.memory"
|
||||
[[ -f "$ENV_FILE" ]] && source <(grep -E '^[A-Z_]+=.+' "$ENV_FILE" | sed 's/^/export /')
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
|
||||
check() {
|
||||
local label="$1" result="$2"
|
||||
if [[ "$result" == "ok" ]]; then
|
||||
echo "✅ $label"
|
||||
((PASS++)) || true
|
||||
else
|
||||
echo "❌ $label: $result"
|
||||
((FAIL++)) || true
|
||||
fi
|
||||
}
|
||||
|
||||
# 1. .env.memory 存在且关键字段非空
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
missing=""
|
||||
for key in PG_DSN VAULT_DIR OPENROUTER_API_KEY OPENROUTER_EMBED_MODEL; do
|
||||
val="$(grep "^${key}=" "$ENV_FILE" | cut -d= -f2- | tr -d '"' | tr -d "'" | xargs)"
|
||||
[[ -z "$val" ]] && missing="$missing $key"
|
||||
done
|
||||
[[ -z "$missing" ]] && check ".env.memory 关键字段" "ok" || check ".env.memory 关键字段" "缺少:$missing"
|
||||
else
|
||||
check ".env.memory 存在" "文件不存在: $ENV_FILE"
|
||||
fi
|
||||
|
||||
# 2. PostgreSQL 可连接
|
||||
if command -v psql &>/dev/null; then
|
||||
result="$(psql "$PG_DSN" -c "SELECT 1;" -t 2>&1 | xargs)"
|
||||
[[ "$result" == "1" ]] && check "PostgreSQL 连通" "ok" || check "PostgreSQL 连通" "$result"
|
||||
elif command -v docker &>/dev/null; then
|
||||
result="$(docker exec pgvector psql -U postgres -d memory -c "SELECT 1;" -t 2>&1 | xargs)"
|
||||
[[ "$result" == "1" ]] && check "PostgreSQL 连通" "ok" || check "PostgreSQL 连通" "$result"
|
||||
else
|
||||
check "PostgreSQL 连通" "psql/docker 均不可用"
|
||||
fi
|
||||
|
||||
# 3. memory_primary 条数 > 0
|
||||
if command -v psql &>/dev/null; then
|
||||
count="$(psql "$PG_DSN" -c "SELECT count(*) FROM memory_primary;" -t 2>&1 | xargs)"
|
||||
elif command -v docker &>/dev/null; then
|
||||
count="$(docker exec pgvector psql -U postgres -d memory -c "SELECT count(*) FROM memory_primary;" -t 2>&1 | xargs)"
|
||||
else
|
||||
count="0"
|
||||
fi
|
||||
[[ "$count" -gt 0 ]] 2>/dev/null && check "memory_primary 条数 ($count)" "ok" || check "memory_primary 条数" "为空或查询失败: $count"
|
||||
|
||||
# 4. 最近 updated_at 在 24h 内
|
||||
if command -v psql &>/dev/null; then
|
||||
fresh="$(psql "$PG_DSN" -c "SELECT count(*) FROM memory_primary WHERE updated_at > now() - interval '24 hours';" -t 2>&1 | xargs)"
|
||||
elif command -v docker &>/dev/null; then
|
||||
fresh="$(docker exec pgvector psql -U postgres -d memory -c "SELECT count(*) FROM memory_primary WHERE updated_at > now() - interval '24 hours';" -t 2>&1 | xargs)"
|
||||
else
|
||||
fresh="0"
|
||||
fi
|
||||
[[ "$fresh" -gt 0 ]] 2>/dev/null && check "24h 内有更新 ($fresh 条)" "ok" || check "24h 内有更新" "无近期更新"
|
||||
|
||||
echo ""
|
||||
echo "结果: ${PASS} 通过 / ${FAIL} 失败"
|
||||
[[ "$FAIL" -eq 0 ]] && exit 0 || exit 1
|
||||
Reference in New Issue
Block a user