Files

62 lines
1.6 KiB
Bash
Raw Permalink Normal View History

2026-03-12 11:23:10 +08:00
#!/bin/bash
# 数据备份脚本
# 备份 /opt/gamer 的数据到 /opt/backup/data/YYYYMMDD/gamer
# 设置变量
SOURCE_DIR="/opt/gamer"
BACKUP_ROOT="/opt/backup/data"
DATE=$(date +%Y%m%d)
BACKUP_DIR="${BACKUP_ROOT}/${DATE}/gamer"
# 创建备份目录
mkdir -p "${BACKUP_DIR}"
# 备份数据库
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始备份数据库..."
2026-07-12 17:50:04 +08:00
export SOURCE_DIR BACKUP_DIR
node <<'NODE'
const path = require('path');
const sourceDir = process.env.SOURCE_DIR;
const backupDir = process.env.BACKUP_DIR;
const Database = require(path.join(sourceDir, 'node_modules', 'better-sqlite3'));
async function main() {
const db = new Database(path.join(sourceDir, 'data.db'), { readonly: true });
try {
await db.backup(path.join(backupDir, 'data.db'));
} finally {
db.close();
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});
NODE
2026-03-12 11:23:10 +08:00
if [ $? -eq 0 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库备份完成"
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 数据库备份失败"
exit 1
fi
# 备份 public 目录
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始备份 public 目录..."
cp -r "${SOURCE_DIR}/public" "${BACKUP_DIR}/public"
if [ $? -eq 0 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] public 目录备份完成"
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] public 目录备份失败"
exit 1
fi
# 记录备份日志
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份完成: ${BACKUP_DIR}"
# 清理7天前的旧备份(可选)
find "${BACKUP_ROOT}" -type d -name "20*" -mtime +7 -exec rm -rf {} \; 2>/dev/null
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 旧备份清理完成"