db-sync 0.1.0

A secure and stable database backup synchronization system with automatic file transfer and verification
db-sync-0.1.0 is not a library.

DB-Sync 数据库备份同步系统

一个安全稳定的数据库备份文件同步系统,支持多系统备份文件的自动同步和验证。

系统架构

  • 服务端 (db-sync-server): 接收和存储备份文件,提供API接口
  • 客户端 (db-sync-client): 定期检查和上传备份文件

功能特性

安全特性

  • JWT令牌认证
  • MD5文件完整性校验
  • 文件大小验证
  • 安全的HTTP传输

稳定性特性

  • 自动重试机制
  • 错误恢复
  • 日志记录
  • 健康检查

同步策略

  • 月度上传: 每月20号自动上传所有备份文件
  • 每日验证: 每月20-26号验证文件完整性
  • 增量同步: 只上传变更的文件

快速开始

1. 配置服务端

编辑 server.config.json:

{
  "listen_addr": "0.0.0.0:3030",
  "data": [
    {
      "system_name": "系统名称",
      "system_ip": "192.168.1.100",
      "backup_dir": "./backups/系统名称",
      "auth_token": "your-secret-token-here"
    }
  ]
}

2. 配置客户端

编辑 client.config.json:

{
  "data": [
    {
      "system_name": "系统名称",
      "system_ip": "192.168.1.100",
      "backup_server_url": "http://server-ip:3030",
      "auth_token": "your-secret-token-here",
      "local_backup_dir": "./local/backups"
    }
  ]
}

3. 构建项目

cargo build --release

4. 生成认证令牌

使用内置的 CLI 工具为每个系统生成 512 位认证令牌:

为单个系统生成令牌

cargo run --bin gen-auth-token generate --system-ip 192.168.1.100 --system-name "HR System"

输出示例:

=== DB-Sync 认证令牌生成 ===
系统 IP: 192.168.1.100
系统名称: HR System
令牌长度: 512 位
生成的令牌: 1154e194e0668a3a37ce63a28c6fe72e0200b937fb1ebb6bbf80345a8bee00c6a612fe10dac35b7781f89a13116c3cf81941c316529b0e89b2ee8ebbf3ac4846

批量生成令牌

  1. 首先创建配置文件 batch_config.json
{
  "secret_key": "your_custom_secret_key",
  "systems": [
    {
      "system_ip": "192.168.1.100",
      "system_name": "HR System"
    },
    {
      "system_ip": "192.168.1.101",
      "system_name": "Asset Management System"
    }
  ]
}
  1. 然后运行批量生成命令:
cargo run --bin gen-auth-token batch --config-file batch_config.json --format json

验证令牌格式

cargo run --bin gen-auth-token validate --token "your_token_here"

查看所有可用命令

cargo run --bin gen-auth-token -- --help

生成示例配置

cargo run --bin gen-auth-token example

5. 运行系统

启动服务端

cargo run --bin db-sync-server

启动客户端

cargo run --bin db-sync-client

6. 测试系统

运行测试脚本:

# Windows

test_system.bat


# Linux/Mac

bash test_system.sh

API接口

健康检查

GET /health

文件上传

POST /api/upload
Headers:
- authorization: Bearer <token>

Query Parameters:
- system_ip: 系统IP
- filename: 文件名
- blake3: 文件blake3
- size: 文件大小

Body: 文件二进制数据

blake3查询

POST /api/blake3
Headers:
- authorization: Bearer <token>

Query Parameters:
- system_ip: 系统IP
- filename: 文件名

文件结构

db-sync/
├── src/
│   ├── db-sync-server.rs    # 服务端代码
│   └── db-sync-client.rs    # 客户端代码
├── server.config.json       # 服务端配置
├── client.config.json       # 客户端配置
├── test_data/              # 测试数据
├── test_system.bat         # Windows测试脚本
├── test_system.sh          # Linux/Mac测试脚本
└── README.md               # 说明文档

安全建议

  1. 令牌管理: 使用强密码作为auth_token,定期更换
  2. 网络安全: 在生产环境中使用HTTPS
  3. 访问控制: 限制API访问的IP地址
  4. 备份加密: 对敏感备份文件进行加密

监控和维护

日志查看

系统使用结构化日志,可通过环境变量控制日志级别:

export RUST_LOG=info

cargo run --bin db-sync-server

健康检查

定期检查服务状态:

curl http://server-ip:3030/health

文件验证

手动验证文件完整性:

# 计算本地文件blake3校验值

blake3 backup_file.sql


# 查询服务器文件blake3校验值

curl -X POST http://server-ip:3030/api/blake3 \

  -H "authorization: Bearer <token>" \

  -d "system_ip=192.168.1.100&filename=backup_file.sql"

故障排除

常见问题

  1. 连接失败: 检查网络连接和防火墙设置
  2. 认证失败: 验证auth_token配置是否正确
  3. 文件校验失败: 检查文件传输过程中的完整性
  4. 磁盘空间不足: 定期清理旧的备份文件

调试模式

启用详细日志:

export RUST_LOG=debug

cargo run --bin db-sync-server

许可证

本项目采用MIT许可证。

Crates.io 信息

包名: db-sync
版本: 0.1.0
Rust 版本要求: 1.70+
许可证: MIT
关键词: backup, sync, database, file-transfer, security

发布说明

此包已准备好发布到 crates.io,提供企业级的数据库备份同步解决方案。

功能特性

  • 🔐 安全的令牌认证机制
  • 📁 文件完整性校验 (blake3)
  • ⏰ 定时任务调度
  • 🔄 自动重试和错误恢复
  • 📊 详细的日志记录和监控

适用场景

  • 企业数据库备份
  • 多系统文件同步
  • 定时数据备份任务
  • 安全的文件传输

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

更新日志

v0.1.0

  • 初始版本发布
  • 实现基本的客户端-服务器架构
  • 支持文件上传和blake3校验
  • 添加定时任务调度功能
  • 完善的错误处理和日志记录