Skip to content

宝塔Linux面板一对多异地服务器数据同步备份插件,支持网站、数据库、FTP、计划任务等自动同步,自动检测并配置目标服务器环境(Nginx/Apache/PHP/MySQL等),定时增量备份,确保数据安全。适用于多服务器环境的数据容灾备份和迁移场景。

License

Notifications You must be signed in to change notification settings

jiulingyun/bt-towe-sync

Repository files navigation

宝塔多服务器同步备份插件

Version Platform BT Panel License

智能化异地服务器数据同步备份工具

功能特性快速开始使用文档常见问题


📖 项目简介

宝塔多服务器同步备份插件是一款专业的异地数据同步备份工具,支持将网站、数据库、FTP账户、计划任务等数据自动同步到远程服务器,实现数据容灾备份和环境快速迁移。

核心优势

  • 🎯 智能化环境适配 - 自动检测并安装目标服务器缺失的软件(Nginx/Apache/PHP/MySQL等)
  • 定时自动备份 - 支持按分钟/小时设置同步周期,自动执行无需人工干预
  • 🔄 增量同步 - 支持重复执行,智能跳过已存在的数据
  • 💼 多服务器管理 - 一台服务器可配置多个备份目标,统一管理
  • 🛡️ 数据安全 - 异地备份防止单点故障,确保业务连续性

✨ 功能特性

数据同步

  • 网站同步 - 完整同步网站文件、配置、SSL证书、绑定域名
  • 数据库同步 - 自动导出导入MySQL数据库,保留字符集和权限
  • FTP同步 - 同步FTP账户、密码和目录权限
  • 计划任务同步 - 迁移所有计划任务配置
  • 环境配置同步 - 同步反向代理、重定向、目录保护等配置

智能功能

  • 🔍 环境检测 - 自动检测目标服务器环境并安装缺失组件
  • 🚀 PHP扩展同步 - 自动检测并安装PHP扩展
  • ⚙️ 禁用函数同步 - 同步PHP禁用函数配置
  • 🔒 防任务重叠 - 文件锁机制防止同步任务并发执行
  • 📊 实时进度 - 详细的日志输出,实时查看同步进度

用户体验

  • 🎨 现代化UI - 美观的渐变紫色主题设计
  • 📱 响应式布局 - 支持桌面和移动端访问
  • 🌐 域名智能同步 - 自动同步所有绑定域名(包括主域名和附加域名)
  • ⏱️ 执行统计 - 显示同步耗时和成功/失败统计
  • 🔔 友好提示 - 周期过短时自动提示建议

🖼️ 界面预览

主界面 - 状态页面

状态页面

现代化渐变紫色主题,实时显示服务状态

同步配置管理

配置列表

卡片式布局,清晰展示所有同步配置

添加配置界面

添加配置

美观的配置表单,网格布局展示同步数据

日志查看

日志查看

深色主题日志查看器,图标化输出,详细的进度和统计信息


🚀 快速开始

系统要求

  • 操作系统:Linux(CentOS/Ubuntu/Debian等)
  • 宝塔面板:6.9.8 及以上版本
  • Python:3.5+ (宝塔自带)
  • 依赖包:croniter、psutil

安装步骤

方法1:ZIP包导入(推荐)

  1. 下载插件包

    • 在本项目的 Releases 页面下载最新版ZIP包
    • 或点击仓库页面的"克隆/下载" → "下载ZIP"
  2. 导入到宝塔面板

    • 登录宝塔面板
    • 进入 软件商店第三方应用
    • 点击 导入插件
    • 选择下载的ZIP文件
    • 等待安装完成(自动安装依赖)
  3. 启用插件

    • 在已安装的插件列表中找到"多服务器同步备份"
    • 点击"设置"打开插件界面

💡 提示:ZIP包会自动运行 install.sh 安装依赖,无需手动操作

方法2:手动安装

# 1. 克隆项目到宝塔插件目录
cd /www/server/panel/plugin
git clone https://gitee.com/jiulingyun_oa/tower-sync.git remoteback

# 2. 运行安装脚本
cd remoteback
bash install.sh install

# 3. 刷新宝塔面板
# 直接刷新浏览器页面即可,无需重启面板

方法3:自己打包

如果你需要自己创建ZIP包:

# 进入项目目录
cd /www/server/panel/plugin/remoteback

# 打包(文件直接在ZIP根目录,无二级目录)
zip -r ../remoteback.zip . \
  -x "config/config.json" \
  -x "config/sync_*.json" \
  -x "config/.sync_*.lock" \
  -x "backup/*" \
  -x "__pycache__/*" \
  -x ".git/*" \
  -x "*.pyc"

# ZIP包会生成在上级目录
# /www/server/panel/plugin/remoteback.zip

# ZIP包结构(宝塔要求,文件在根目录):
# remoteback.zip
#   ├── index.html
#   ├── info.json
#   ├── install.sh
#   ├── README.md
#   ├── LICENSE
#   ├── helpr.py
#   └── ...其他文件

⚠️ 重要:宝塔插件要求ZIP包中的文件直接在根目录,不能有二级目录!


📚 使用文档

第一步:配置目标服务器

  1. 开启目标服务器的API接口

    • 登录目标备份服务器的宝塔面板
    • 进入 设置 → API接口
    • 开启API接口功能
    • 将源服务器IP添加到白名单
  2. 获取API密钥

    • 在API接口页面复制API密钥

第二步:添加同步配置

  1. 打开插件

    • 在宝塔面板中找到"多服务器同步备份"插件
    • 点击"设置"打开插件界面
  2. 添加配置

    • 点击"同步设置" → "添加配置"
    • 填写以下信息:
      • 面板名称:自定义名称,如"生产服务器1"
      • 面板地址:目标服务器地址,如 http://192.168.1.100:8888
      • 面板密钥:目标服务器的API密钥
      • 同步周期:选择"按小时"或"按分钟",建议2小时以上
  3. 选择同步数据

    • 勾选需要同步的内容(至少选择一项)
  4. 保存配置

    • 点击"确定"保存

第三步:启动同步

定时自动同步

  • 点击"状态" → "启动服务"
  • 插件会按设置的周期自动执行同步

立即执行一次

  • 点击"状态" → "直接运行"
  • 立即执行所有配置的同步任务

第四步:查看日志

  • 正常日志:查看同步进度和结果
  • 错误日志:查看失败原因和错误详情

🎯 使用场景

1. 多服务器备份

将多台生产服务器的数据统一同步到一台备份服务器,实现集中式数据备份。

2. 服务器迁移

快速将整个服务器环境(网站、数据库、配置等)迁移到新服务器。

3. 数据容灾

定时异地备份,防止单点故障导致数据丢失。

4. 环境复制

快速复制生产环境到测试或开发服务器。


⚙️ 配置说明

同步周期建议

数据类型 建议周期 说明
仅网站文件 2-4小时 文件多,传输耗时
仅数据库 1-2小时 导出导入较快
网站+数据库 4-6小时 综合耗时长
全量同步 6-12小时 数据量大,建议凌晨执行

📋 项目结构

remoteback/
├── config/                 # 配置文件目录
├── static/                 # 静态资源(CSS/JS)
├── templates/              # 页面模板
├── helpr.py               # 辅助函数库
├── panel_api.py           # 宝塔API封装
├── psync.py              # 核心同步逻辑
├── remoteback_main.py    # 主程序入口
├── schedule.py           # 定时调度器
├── index.html            # 主界面
├── install.sh            # 安装脚本
└── info.json             # 插件信息

🔧 技术栈

  • 后端:Python 3
  • 前端:jQuery + Layui
  • 定时任务:Cron + Croniter
  • 文件传输:宝塔API + Requests
  • 并发控制:文件锁(fcntl)

📝 更新日志

v2.0.0 (2025-10-20)

🎉 重大更新

  • ✅ 全新现代化UI设计(渐变紫色主题)
  • ✅ 网站域名智能同步功能
  • ✅ 防止同步任务重叠机制
  • ✅ 配置名称唯一性保证(时间戳+UUID)

🐛 Bug修复

  • ✅ 修复版本号字符串比较错误
  • ✅ 修复nginx配置读取Bug
  • ✅ 修复URL解析错误
  • ✅ 修复调度器时间计算问题
  • ✅ 修复配置初始化检查Bug

✨ 功能优化

  • ✅ 强制选择同步数据(不允许空配置)
  • ✅ 同步时间立即更新
  • ✅ 详细的进度显示和统计
  • ✅ 图标化日志输出
  • ✅ 完善的异常处理
  • ✅ 周期过短智能提示

❓ 常见问题

Q1: 为什么同步任务不执行?

A: 检查以下几点:

  1. 确认已点击"启动服务"
  2. 查看"状态"页面,确认显示"开启"
  3. 检查日志是否有"跳过执行"提示(任务重叠)
  4. 确认同步周期设置合理

Q2: 同步失败怎么办?

A:

  1. 查看"错误日志"页面,找到具体错误信息
  2. 常见原因:
    • 目标服务器API密钥错误
    • IP未加入白名单
    • 目标服务器磁盘空间不足
    • 网络连接问题

Q3: 提示"任务重叠"怎么办?

A:

  • 说明上次同步还未完成
  • 建议增加同步周期时间
  • 或减少同步的数据量

Q4: 支持哪些数据同步?

A:

  • ✅ 网站文件和配置
  • ✅ 网站绑定的所有域名
  • ✅ MySQL数据库
  • ✅ FTP账户
  • ✅ 计划任务
  • ✅ SSL证书
  • ✅ 反向代理、重定向、目录保护配置

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

提交规范

  • 🐛 Bug修复:fix: 修复xxx问题
  • ✨ 新功能:feat: 添加xxx功能
  • 📝 文档:docs: 更新xxx文档
  • 🎨 样式:style: 优化xxx样式

📄 开源协议

本项目采用 MIT License 开源协议。


👥 作者信息


🌟 致谢

感谢所有为这个项目做出贡献的开发者!

如果这个项目对你有帮助,欢迎 Star ⭐ 支持!


Made with ❤️ by yang

About

宝塔Linux面板一对多异地服务器数据同步备份插件,支持网站、数据库、FTP、计划任务等自动同步,自动检测并配置目标服务器环境(Nginx/Apache/PHP/MySQL等),定时增量备份,确保数据安全。适用于多服务器环境的数据容灾备份和迁移场景。

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published