部署与使用手册 | 版本 1.1 | 2026年4月
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux(CentOS 7+、Ubuntu 18+、Debian 10+) |
| Python | 3.6 及以上(脚本自动检测) |
| 磁盘空间 | 取决于备份数据量,建议独立挂载备份存储盘 |
| 网络 | 管理端需能 SSH 访问所有被备份服务器 |
| 权限 | 需要 root 权限执行部署脚本 |
🚀 上传安装包后,执行一条命令即可完成部署
默认端口 8091,可自定义,如 bash deploy.sh 9090
backup-system/ 目录上传到服务器,如 /tmp/backup-system/cd /tmp/backup-system
bash deploy.sh/opt/backup-system/,创建数据目录backup-system.service,设置开机自启============================================
✅ 常青云备份系统 部署完成!
============================================
🌐 访问地址: http://192.168.1.100:8091
🔑 默认密码: admin123
📋 常用命令:
查看状态: systemctl status backup-system
重启服务: systemctl restart backup-system
停止服务: systemctl stop backup-system
查看日志: journalctl -u backup-system -f
⚠️ 请登录后立即修改默认密码!
sudo bash deploy.sh。/opt/backup-system/
├── app.py # 后端主程序
├── backup_engine.py # 备份引擎
├── deploy.sh # 一键部署脚本
├── uninstall.sh # 卸载脚本
├── data/
│ ├── db.json # 数据库文件
│ └── backups/ # 备份文件存储目录
│ └── 服务器名/任务名/
│ ├── *_full.tar.gz # 全量备份归档
│ └── rsync_incremental/ # 增量备份镜像
└── templates/
└── index.html # 前端页面
浏览器访问 http://服务器IP:8091/,输入密码登录。默认密码 admin123,请首次登录后立即修改。
登录后默认进入仪表盘,展示:
服务器仅管理 SSH 连接信息,不再包含备份目录配置:
| 字段 | 说明 | 示例 |
|---|---|---|
| 名称 | 服务器标识名 | 生产Web服务器 |
| IP地址/主机名 | SSH连接地址 | 192.168.1.100 |
| SSH端口 | 默认22 | 22 |
| 用户名 | SSH登录用户 | root |
| 密码 | SSH密码(密钥认证可留空) | ****** |
| 字段 | 说明 |
|---|---|
| 任务名称 | 任务标识,如"每日网站备份" |
| 关联服务器 | 选择已添加的服务器 |
| 备份目录 新 | 支持配置多个目录,可动态增删 |
| 备份类型 | 全量备份(tar归档)或增量备份(rsync同步) |
| 备份周期 | 每天 / 每周 / 每月 / 自定义Cron |
| 执行时间 | 每天几点执行,如 02:00 |
| 保留天数 | 超过天数的备份自动清理,1-365天 |
| 启用状态 | 启用/禁用 |
.tar.gz 归档文件rsync_incremental/目录名//var/www/html 和 /etc/nginx,全量备份会打包成一个 tar.gz;增量备份会分别同步到 rsync_incremental/html/ 和 rsync_incremental/nginx/。从旧版升级时,若任务没有 backup_paths 字段,系统会自动从关联服务器的 backup_path 回退读取,无需手动迁移。
last_run 判断)| 字段 | 说明 |
|---|---|
| 状态 | 成功 / 失败 / 进行中 |
| 大小 | 全量:tar.gz 文件大小;增量:rsync 目录总大小 |
| 下载 | 全量备份可直接下载 .tar.gz;增量备份显示"同步目录"标签 |
| 日志 | 查看备份执行的详细日志 |
设置备份文件的存储路径,默认为 data/backups/。建议挂载独立磁盘。
| 字段 | 说明 |
|---|---|
| SMTP服务器 | 如 smtp.qq.com、smtp.163.com |
| SMTP端口 | SSL通常465,TLS通常587 |
| 使用SSL | 465端口选"是",587端口选"否"(使用STARTTLS) |
| 发件人邮箱 | SMTP登录账号 |
| 邮箱密码/授权码 | QQ邮箱等需使用授权码而非登录密码 |
| 字段 | 说明 |
|---|---|
| 告警收件人邮箱 | 备份失败时接收告警的邮箱,多个用逗号分隔 |
last_run 判断)# 1. 从Web界面下载 .tar.gz 文件,或从备份目录直接拷贝
scp /opt/backup-system/data/backups/服务器名/任务名/20260424_020000_full.tar.gz 目标服务器:/tmp/
# 2. 在目标服务器解压恢复
tar xzf /tmp/20260424_020000_full.tar.gz -C /恢复目录/
# rsync增量备份的文件直接在镜像目录中,直接复制即可
scp -r /opt/backup-system/data/backups/服务器名/任务名/rsync_incremental/html/* 目标服务器:/var/www/html/
scp -r /opt/backup-system/data/backups/服务器名/任务名/rsync_incremental/nginx/* 目标服务器:/etc/nginx/
# 启动
systemctl start backup-system
# 停止
systemctl stop backup-system
# 重启
systemctl restart backup-system
# 查看状态
systemctl status backup-system
# 查看日志
journalctl -u backup-system -f
# 备份系统自身数据
cp /opt/backup-system/data/db.json /backup/db_$(date +%Y%m%d).json
# 查看备份目录占用
du -sh /opt/backup-system/data/backups/*
db.json 包含服务器密码等敏感信息,注意保护文件权限系统内置卸载脚本,交互式操作,安全可控:
cd /opt/backup-system
bash uninstall.sh
| 选项 | 说明 |
|---|---|
| 仅卸载服务 | 停止服务、移除 systemd、删除程序文件,保留备份数据(/opt/backup-system/data/) |
| 完全卸载 | 停止服务、移除 systemd、删除全部文件(包括备份数据) |
============================================
🗑️ 常青云备份系统 卸载
============================================
确认要卸载 常青云备份系统 吗?备份文件将保留在 /opt/backup-system/data/ (y/N): y
[INFO] 停止服务...
[INFO] 服务已移除
是否同时删除程序文件和备份数据?(/opt/backup-system) (y/N): N
[INFO] 备份数据保留在 /opt/backup-system/data/
✅ 卸载完成
如无法使用卸载脚本,可手动执行以下命令:
# 1. 停止并禁用服务
systemctl stop backup-system
systemctl disable backup-system
# 2. 删除 systemd 服务文件
rm -f /etc/systemd/system/backup-system.service
systemctl daemon-reload
# 3. 删除程序文件(可选,保留数据目录)
rm -rf /opt/backup-system/app.py /opt/backup-system/backup_engine.py
rm -rf /opt/backup-system/deploy.sh /opt/backup-system/uninstall.sh
rm -rf /opt/backup-system/templates
# 4. 彻底删除(含备份数据,谨慎!)
rm -rf /opt/backup-system
| 项目 | 技术 |
|---|---|
| 后端 | Python 3 标准库(http.server + socketserver),无第三方依赖 |
| 前端 | 原生 HTML/CSS/JS,无框架依赖 |
| 数据库 | JSON 文件(db.json),轻量无需数据库服务 |
| 全量备份 | SSH + tar 远程打包(多目录 → 单个 tar.gz) |
| 增量备份 | SSH + rsync 远程同步(每目录独立镜像) |
| 调度器 | 内置线程,60秒轮询 |
| 并发 | ThreadingMixIn 多线程处理请求 |
| 认证 | Cookie Token + SHA256 密码哈希 |
| 邮件告警 | smtplib + SMTP_SSL/STARTTLS,HTML格式 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /login | 登录认证 |
| GET | /api/dashboard | 仪表盘数据 |
| GET/POST | /api/servers | 服务器列表 / 添加 |
| POST | /api/servers/{id} | 更新服务器 |
| POST | /api/servers/{id}/delete | 删除服务器 |
| POST | /api/servers/{id}/test | 测试SSH连接 |
| GET/POST | /api/tasks | 任务列表 / 添加 |
| POST | /api/tasks/{id} | 更新任务 |
| POST | /api/tasks/{id}/delete | 删除任务 |
| POST | /api/tasks/{id}/toggle | 启用/禁用任务 |
| POST | /api/tasks/{id}/run | 手动执行任务 |
| GET | /api/backups | 备份历史列表 |
| GET | /api/backups/{id}/download | 下载备份文件 |
| GET | /api/backups/{id}/log | 获取备份日志 |
| POST | /api/backups/{id}/delete | 删除备份记录 |
| GET | /api/backup-files | 浏览备份文件 |
| GET | /api/backup-file-download | 下载备份文件(按路径) |
| GET/POST | /api/settings | 获取/保存系统设置 |
| POST | /api/test-email | 发送测试邮件 |
| POST | /api/change-password | 修改登录密码 |
deploy.sh:自动安装依赖、部署程序、注册服务、配置防火墙uninstall.sh:交互式卸载,可选保留或删除备份数据# 清除测试数据后打包(保留空数据目录结构)
cd /opt/backup-system
rm -rf data/backups/* data/db.json
cd ..
tar czf 常青云备份系统-v1.1.tar.gz backup-system/
# 验证打包内容
tar tzf 常青云备份系统-v1.1.tar.gz