一个基于 Python 的全自动文件备份系统,支持跨主机同步、Web 管理界面、定时任务、主机纳管和 Excel 批量导入。远程主机无需安装任何额外软件,只需提供 SSH 服务即可实现安全的全量+增量备份。
✨ 特性
- 🖥️ 美观的 Web 管理界面
基于 Vue 2 + Element UI 构建,前后端分离,支持登录鉴权。 - 📦 增量备份
通过比较文件大小和修改时间,仅传输变化或新增的文件,大幅节省带宽和存储。 - 🌐 跨主机同步
支持 本地 ⇄ 远程 、远程 ⇄ 远程(中转),远程主机仅需基础 SSH 命令(find、tar、rm 等)。 - 🤖 定时任务
可创建定时备份任务,支持增量/全量模式,后台守护线程执行,无需 crontab。 - 📊 Excel 批量导入
按模板填写源和目标路径,上传 Excel 即可批量执行增量同步任务。 - 🔑 主机纳管
集中管理远程主机的 SSH 密码,自动复用 SSH 连接,全程无需手动输入密码。 - 📝 完整日志
所有操作记录到日志文件,Web 界面实时查看。
🏗️ 系统架构
┌──────────────────────────────────────┐
│ Web 前端 (Vue + Element) │
│ 登录认证、任务提交、结果展示 │
└──────────────────┬───────────────────┘
│ HTTP API
┌──────────────────▼───────────────────┐
│ Flask 后端 (Python) │
│ 单次同步、批量Excel、定时调度、主机管理 │
└──────────────────┬───────────────────┘
│ SSH / SFTP
┌──────────────────▼───────────────────┐
│ 远程主机 (无需安装额外软件) │
│ 只用到 find、tar、mkdir、rm 等基础命令 │
└──────────────────────────────────────┘
📋 依赖
本地环境(运行此程序的机器)
- Python 3.6+
- pip 包 :
flask,paramiko,openpyxl - 系统命令:
rsync(可选,用于本地同步,非必须)
远程主机(被备份的机器)
- 仅需 SSH 服务 (默认 22 端口),以及系统自带的
find、tar、mkdir、rm、sh等基本命令。
🚀 快速开始
1. 克隆仓库
bash
git clone https://github.com/Zhh9126/file-backup-system.git
cd file-backup-system
2. 安装依赖
bash
pip install -r requirements.txt
或手动安装:
bash
pip install flask paramiko openpyxl
3. 启动服务
bash
python app.py
程序将在 http://0.0.0.0:5000 启动。
4. 登录系统
打开浏览器访问 http://<服务器IP>:5000,使用默认账号登录:
- 用户名 :
admin - 密码 :
admin123
(生产环境请立即修改 app.py 中的 USERS 字典)
📖 使用指南
单次同步
- 进入 单次同步 标签页。
- 填写 源路径 (本地绝对路径,或
user@host:path格式)。 - 填写 目标路径(同格式)。
- 选择 增量 或 全量 模式,点击 执行同步。
批量同步 (Excel)
- 在 批量同步 标签页点击 下载模板,获得 Excel 文件。
- 按表头填写每一行的 源路径 和 目标路径(源IP/目标IP留空表示本机)。
- 点击 上传 Excel 并执行,系统将逐行执行增量同步并返回成功/失败统计。
定时任务
- 进入 定时任务 标签页,填写源、目标、间隔(分钟)和模式(增量/全量)。
- 点击 创建定时任务,任务将立即启动并在后台循环执行。
- 可在列表中 停止 运行中的任务。
主机纳管
- 进入 主机管理 标签页,添加远程主机的地址(如
root@192.168.1.100)和 SSH 密码。 - 之后在单次同步或定时任务中直接使用
root@192.168.1.100:/path格式,程序会自动读取密码并连接。
日志查看
在 日志 标签页可实时查看操作记录,点击刷新获取最新内容。
🔐 安全建议
- 修改默认登录账号 :编辑
app.py中的USERS字典。 - 密码存储 :主机密码存储在
hosts.json,权限设为600,仅本人可读。建议生产环境使用 SSH 密钥认证,可将密码留空并修改代码中的get_ssh_client。 - HTTPS:生产部署时请使用 Nginx/Apache 反向代理并配置 SSL。
❓ 常见问题
Q: 远程主机需要安装什么吗?
A: 不需要。只要开启了 SSH 服务,并允许 find、tar、mkdir、rm 等命令即可(几乎所有 Linux 发行版都自带)。
Q: 为什么第一次同步时提示"变化文件很多"?
A: 因为首次同步会将所有文件视为新增,属正常现象。后续增量对比将仅传输真正变化的文件。
Q: 远程到本地时,本地文件的时间戳正确吗?
A: 系统会在下载文件后主动设置本地文件的时间戳与远程源一致,确保下次增量对比的准确性。
Q: 能备份 Windows 远程主机吗?
A: 目前不支持,因为依赖 Unix 风格的 find -printf 等命令。可通过 WSL 或 Cygwin 尝试,但未经测试。
Q: 忘记密码怎么办?
A: 编辑 app.py,修改 USERS 字典并重启服务。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
如有任何问题或建议,请至 GitHub Issues 反馈。
📄 许可证
本项目采用 MIT License。
作者 :Zhh9126
项目地址 :https://github.com/Zhh9126/filebackupsystem




