前言

在日常开发和运维工作中,数据库备份是一个至关重要的环节。一个可靠、易用的备份工具能够为我们的数据安全提供强有力的保障。今天要介绍的项目是 Databasus - 一个免费、开源、可自托管的数据库备份工具。

Databasus 项目简介

Databasus 是一个专注于数据库备份的开源项目,其前身是 Postgresus。项目自 2023 年开始开发,最初作为内部工具用于备份生产和个人项目的数据库。2025 年初,它作为开源项目在 GitHub 上发布,并在年底获得了广泛的关注和使用。

核心特性

支持多种数据库

Databasus 支持主流的数据库类型:

  • PostgreSQL: 12、13、14、15、16、17 和 18
  • MySQL: 5.7、8 和 9
  • MariaDB: 10 和 11
  • MongoDB: 4、5、6、7 和 8

灵活的计划备份

  • 支持每小时、每天、每周、每月或使用 cron 表达式进行调度
  • 可以在特定时间运行备份(例如,凌晨 4 点低流量时段)
  • 智能压缩技术,可实现 4-8 倍的空间节省(约 20% 开销)

多种存储目标

Databasus 支持将备份保存到多种存储位置:

  • 本地存储: 将备份保存在您的 VPS/服务器上
  • 云存储: S3、Cloudflare R2、Google Drive、NAS、Dropbox、SFTP、Rclone 等
  • 所有数据都在用户的控制之下,安全可靠

智能通知系统

支持多种通知渠道:

  • 邮件、Telegram、Slack、Discord、webhook
  • 实时更新备份成功和失败状态
  • 完美适配 DevOps 工作流

企业级安全

  • AES-256-GCM 加密: 为备份文件提供企业级保护
  • 零信任存储: 备份经过加密,可以安全地存储在共享存储中
  • 密钥加密: 任何敏感数据都经过加密,不会在日志或错误消息中暴露
  • 只读用户: Databasus 默认使用只读用户进行备份,从不存储可以修改数据的任何内容

团队协作功能

  • 工作空间: 为不同项目或团队分组数据库、通知和存储
  • 访问管理: 通过基于角色的权限控制谁可以查看或管理特定数据库
  • 审计日志: 跟踪所有系统活动和用户所做的更改
  • 用户角色: 在工作空间内分配查看者、成员、管理员或所有者角色

用户友好的界面

  • 精心设计的 UI,干净、直观的界面,注重细节
  • 支持深色和浅色主题
  • 移动端适配,随时随地检查备份状态

技术栈

Databasus 的前端采用现代化的技术栈:

  • React 19: 最新的 React 版本
  • TypeScript: 类型安全的开发体验
  • Vite: 快速的构建工具
  • Tailwind CSS: 实用优先的 CSS 框架
  • Ant Design: 企业级 UI 组件库
  • i18next: 强大的国际化框架
  • React Router: 客户端路由
  • Recharts: 数据可视化图表库

安装方式

Databasus 提供了多种安装方式,方便不同场景的部署:

  1. 自动化安装脚本(推荐,仅限 Linux)
  2. 简单的 Docker 运行
  3. Docker Compose 设置
  4. Kubernetes with Helm

最简单的 Docker 运行方式:

1
2
3
4
5
6
docker run -d \
--name databasus \
-p 4005:4005 \
-v ./databasus-data:/databasus-data \
--restart unless-stopped \
databasus/databasus:latest

中文适配工作

作为一个面向全球用户的开源项目,国际化(i18n)是必不可少的。为了方便非英语母语用户使用 Databasus,我在项目中引入了 i18next 作为国际化框架。这使得添加多语言支持变得相对简单。但是因为翻译得侵入代码过深并没有向官方提交PR,所以目前只有英文和中文两种语言。

中文适配的优势

  • 全球用户覆盖: 为 Databasus 用户提供中文界面,方便非英语母语用户使用
  • 专业术语翻译: 准确翻译数据库领域的专业术语
  • 简洁的 UI 文本: 中文界面通常更简洁,避免冗长的文本
  • 用户友好的导航: 中文界面的导航更直观,用户更容易理解和操作

国际化架构

Databasus 的国际化架构设计得非常清晰:

  • 使用 i18next 作为核心国际化库
  • 使用 react-i18next 提供 React 组件集成
  • 使用 i18next-browser-languagedetector 自动检测用户语言偏好
  • 翻译文件按模块组织,便于维护

翻译文件结构

翻译文件位于 frontend/src/shared/i18n/locales/ 目录下,按语言和模块分类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
locales/
├── en/ # 英文翻译
│ ├── auth.json
│ ├── backups.json
│ ├── common.json
│ ├── databases.json
│ ├── notifiers.json
│ ├── playground.json
│ ├── restores.json
│ ├── settings.json
│ ├── sidebar.json
│ ├── storages.json
│ ├── users.json
│ └── workspaces.json
└── zh/ # 中文翻译
├── auth.json
├── backups.json
├── common.json
├── databases.json
├── notifiers.json
├── playground.json
├── restores.json
├── settings.json
├── sidebar.json
├── storages.json
├── users.json
└── workspaces.json

中文适配的挑战与解决方案

在进行中文适配时,面临了以下几个挑战:

1. 术语翻译的准确性

数据库领域的专业术语需要准确翻译,同时保持技术文档的专业性。例如:

  • “Healthcheck attempts” 翻译为 “健康检查尝试次数”
  • “Scheduled backups” 翻译为 “备份计划”
  • “Zero trust storage” 翻译为 “零信任存储”

2. UI 文本的简洁性

中文和英文在表达方式上存在差异,中文通常更简洁。在翻译时,需要确保 UI 文本在中文环境下同样简洁明了,不会显得冗长。

3. 上下文一致性

同一个术语在不同模块中需要保持翻译一致。例如,”Database” 在所有模块中都翻译为”数据库”,而不是混用”数据库”和”资料库”。

4. 技术细节的传达

一些技术细节需要准确传达,不能因为翻译而丢失信息。例如,cron 表达式的说明、压缩比例等技术参数都需要准确翻译。

中文适配的成果

经过系统的中文适配工作,Databasus 现在已经支持完整的中文界面,包括:

  • 认证模块: 登录、注册、密码重置等
  • 数据库管理: 数据库列表、添加数据库、编辑数据库等
  • 备份管理: 备份历史、备份详情、手动备份等
  • 恢复管理: 恢复操作、恢复历史等
  • 存储管理: 存储配置、存储类型选择等
  • 通知管理: 通知渠道配置、通知历史等
  • 工作空间管理: 工作空间创建、成员管理等
  • 用户管理: 用户列表、角色分配等
  • 设置: 个人设置、系统设置等
  • 侧边栏: 导航菜单、快捷操作等

翻译示例

以下是一些翻译示例,展示了中文适配的质量:

数据库模块 (databases.json)

1
2
3
4
5
6
7
8
{
"healthcheckAttempts": "健康检查尝试次数",
"scheduledBackups": "计划备份",
"manualBackup": "手动备份",
"backupHistory": "备份历史",
"compressionLevel": "压缩级别",
"encryptionEnabled": "启用加密"
}

通用模块 (common.json)

1
2
3
4
5
6
7
8
9
10
11
{
"save": "保存",
"cancel": "取消",
"delete": "删除",
"edit": "编辑",
"create": "创建",
"confirm": "确认",
"loading": "加载中...",
"success": "成功",
"error": "错误"
}

存储模块 (storages.json)

1
2
3
4
5
6
7
8
{
"localStorage": "本地存储",
"s3Storage": "S3 存储",
"googleDrive": "Google Drive",
"dropbox": "Dropbox",
"sftp": "SFTP",
"rclone": "Rclone"
}

未来改进方向

中文适配工作已经取得了显著成果,但仍有一些可以改进的方向:

  1. 术语表建立: 建立一个统一的术语表,确保所有翻译的一致性
  2. 上下文注释: 为翻译文件添加上下文注释,帮助其他贡献者理解翻译的背景
  3. 翻译审核: 建立翻译审核机制,确保翻译质量
  4. 社区参与: 鼓励社区参与翻译工作,支持更多语言

使用方法

  1. 使用docker部署 Databasus。
  2. 下载多语言前端(当前只有英文和中文) 点击下载:Databasus 多语言版
  3. 为docker容器挂载前端静态文件目录类似 -v ./databaus-zh:/app/ui/build
  4. 访问Databasus即可切换语言到中文

总结

Databasus 是一个功能强大、设计精美的数据库备份工具,它不仅提供了丰富的功能,还注重用户体验和安全性。通过使用现代化的技术栈和良好的架构设计,Databasus 为用户提供了一个可靠、易用的备份解决方案。

中文适配工作的完成,使得 Databasus 能够更好地服务中文用户,降低了使用门槛。这不仅体现了开源项目的包容性,也为中文用户参与开源项目提供了更好的体验。

如果你正在寻找一个可靠的数据库备份工具,不妨试试 Databasus。如果你对开源项目感兴趣,也欢迎参与到 Databasus 的开发中来!

相关链接


本文由撰写,欢迎转载,请注明出处。