37 lines
1.2 KiB
Bash
Executable File
37 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# 云端数据库一键备份脚本
|
||
# 用法:bash backup-db.sh
|
||
|
||
set -e
|
||
|
||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||
LOCAL_DIR="/Users/niuniu/programs/docker/db-backups"
|
||
|
||
log() { echo "[$(date '+%H:%M:%S')] $1"; }
|
||
|
||
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 && \
|
||
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"
|
||
|
||
# 确保本地备份目录存在
|
||
mkdir -p "${LOCAL_DIR}"
|
||
|
||
# 复制到本地
|
||
log "复制到本地..."
|
||
scp "txjp:/tmp/db-backup/assets-${TIMESTAMP}.db" "${LOCAL_DIR}/"
|
||
scp "txjp:/tmp/db-backup/issue-${TIMESTAMP}.db" "${LOCAL_DIR}/"
|
||
|
||
# 清理云端临时文件
|
||
ssh txjp "rm -rf /tmp/db-backup"
|
||
|
||
log "备份完成:${TIMESTAMP}"
|
||
ls -lh "${LOCAL_DIR}"/assets-${TIMESTAMP}.db "${LOCAL_DIR}"/issue-${TIMESTAMP}.db 2>/dev/null
|