feat(install): 添加数据库自动迁移功能

更新和修复模式会自动检测并迁移旧数据库:
- 检测 backend/ftp-manager.db(旧路径)
- 自动迁移到 backend/data/database.db(新路径)
- 同时迁移 journal/wal/shm 文件
- 新旧数据库同时存在时警告用户

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-27 21:08:14 +08:00
parent ab61582487
commit 0d983c67e3

View File

@@ -3862,6 +3862,47 @@ update_patch_env() {
echo "" echo ""
} }
# 迁移旧数据库文件
update_migrate_database() {
print_step "检查数据库迁移..."
local OLD_DB="${PROJECT_DIR}/backend/ftp-manager.db"
local NEW_DB_DIR="${PROJECT_DIR}/backend/data"
local NEW_DB="${NEW_DB_DIR}/database.db"
# 如果旧数据库存在且新数据库不存在,执行迁移
if [[ -f "$OLD_DB" ]]; then
if [[ ! -f "$NEW_DB" ]]; then
# 创建新目录
mkdir -p "$NEW_DB_DIR"
# 迁移数据库
mv "$OLD_DB" "$NEW_DB"
print_success "数据库已迁移: ftp-manager.db -> data/database.db"
# 同时迁移 journal 文件(如果存在)
if [[ -f "${OLD_DB}-journal" ]]; then
mv "${OLD_DB}-journal" "${NEW_DB}-journal"
fi
if [[ -f "${OLD_DB}-wal" ]]; then
mv "${OLD_DB}-wal" "${NEW_DB}-wal"
fi
if [[ -f "${OLD_DB}-shm" ]]; then
mv "${OLD_DB}-shm" "${NEW_DB}-shm"
fi
else
# 新旧数据库都存在,警告用户
print_warning "检测到新旧数据库同时存在!"
print_warning " 旧: ${OLD_DB}"
print_warning " 新: ${NEW_DB}"
print_warning "请手动确认数据后删除旧数据库文件"
fi
else
print_info "无需迁移数据库"
fi
echo ""
}
update_main() { update_main() {
# 检查root权限 # 检查root权限
check_root check_root
@@ -4373,6 +4414,9 @@ repair_main() {
# 读取现有配置 # 读取现有配置
repair_load_existing_config repair_load_existing_config
# 迁移数据库(如果需要)
update_migrate_database
# 补充缺失的环境配置(如 TRUST_PROXY, ENFORCE_HTTPS 等) # 补充缺失的环境配置(如 TRUST_PROXY, ENFORCE_HTTPS 等)
update_patch_env update_patch_env