fix: 备份前执行 WAL checkpoint + 确保本地目录存在

- 复制数据库文件前通过 docker exec sqlite3 执行 PRAGMA wal_checkpoint(TRUNCATE),
  确保 WAL 内容合并到 .db 主文件,避免备份不一致或损坏
- 添加 mkdir -p 确保本地备份目录存在
This commit is contained in:
aiyimickey 2026-05-15 16:19:15 +08:00
parent f3373d6f9a
commit d65583f6df
1 changed files with 8 additions and 0 deletions

View File

@ -11,11 +11,19 @@ log() { echo "[$(date '+%H:%M:%S')] $1"; }
log "开始备份云端数据库..." log "开始备份云端数据库..."
# 备份前执行 WAL checkpoint确保数据全部合并到 .db 主文件
log "执行 WAL checkpoint..."
ssh txjp "docker exec assets-ai sqlite3 /app/data/assets.db 'PRAGMA wal_checkpoint(TRUNCATE)' && \
docker exec issue-ai sqlite3 /app/data/issue.db 'PRAGMA wal_checkpoint(TRUNCATE)'"
# 云端打包 # 云端打包
ssh txjp "mkdir -p /tmp/db-backup && \ ssh txjp "mkdir -p /tmp/db-backup && \
cp /root/docker/assets-ai/data/assets.db /tmp/db-backup/assets-${TIMESTAMP}.db && \ cp /root/docker/assets-ai/data/assets.db /tmp/db-backup/assets-${TIMESTAMP}.db && \
cp /root/docker/issue-ai/data/issue.db /tmp/db-backup/issue-${TIMESTAMP}.db" cp /root/docker/issue-ai/data/issue.db /tmp/db-backup/issue-${TIMESTAMP}.db"
# 确保本地备份目录存在
mkdir -p "${LOCAL_DIR}"
# 复制到本地 # 复制到本地
log "复制到本地..." log "复制到本地..."
scp "txjp:/tmp/db-backup/assets-${TIMESTAMP}.db" "${LOCAL_DIR}/" scp "txjp:/tmp/db-backup/assets-${TIMESTAMP}.db" "${LOCAL_DIR}/"