文件备份系统已开源

一个基于 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 端口),以及系统自带的 findtarmkdirrmsh 等基本命令。

🚀 快速开始

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 字典)

📖 使用指南

单次同步

  1. 进入 单次同步 标签页。
  2. 填写 源路径 (本地绝对路径,或 user@host:path 格式)。
  3. 填写 目标路径(同格式)。
  4. 选择 增量全量 模式,点击 执行同步

批量同步 (Excel)

  1. 批量同步 标签页点击 下载模板,获得 Excel 文件。
  2. 按表头填写每一行的 源路径目标路径(源IP/目标IP留空表示本机)。
  3. 点击 上传 Excel 并执行,系统将逐行执行增量同步并返回成功/失败统计。

定时任务

  1. 进入 定时任务 标签页,填写源、目标、间隔(分钟)和模式(增量/全量)。
  2. 点击 创建定时任务,任务将立即启动并在后台循环执行。
  3. 可在列表中 停止 运行中的任务。

主机纳管

  1. 进入 主机管理 标签页,添加远程主机的地址(如 root@192.168.1.100)和 SSH 密码。
  2. 之后在单次同步或定时任务中直接使用 root@192.168.1.100:/path 格式,程序会自动读取密码并连接。

日志查看

日志 标签页可实时查看操作记录,点击刷新获取最新内容。

🔐 安全建议

  • 修改默认登录账号 :编辑 app.py 中的 USERS 字典。
  • 密码存储 :主机密码存储在 hosts.json,权限设为 600,仅本人可读。建议生产环境使用 SSH 密钥认证,可将密码留空并修改代码中的 get_ssh_client
  • HTTPS:生产部署时请使用 Nginx/Apache 反向代理并配置 SSL。

❓ 常见问题

Q: 远程主机需要安装什么吗?

A: 不需要。只要开启了 SSH 服务,并允许 findtarmkdirrm 等命令即可(几乎所有 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

相关推荐
智能运维指南10 小时前
2026年ITSM系统怎么选?四款主流方案与五维评估模型
运维·itsm·嘉为蓝鲸
我命由我1234510 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
骇客野人10 小时前
测试环境MySQL迁移Vastbase(海量数据库)完整改造与落地实施方案
运维·服务器
迪康Defender10 小时前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
Wang's Blog11 小时前
Java 项目实战: 外卖平台-删除分类的关联校验与自定义业务异常
java·服务器·项目开发
zly350011 小时前
VMware Converter Standalone 物理机转化为虚拟机后源1硬盘变成了2个硬盘(2个硬盘文件)虚拟机无法启动。
linux·运维·服务器
智能运维指南11 小时前
2026 企业智能运维平台选型:私有化、信创、全链路打通该怎么权衡?
运维·嘉为蓝鲸·aiops平台·一体化运维平台
学习中的码虫11 小时前
网络编程5
服务器·网络
春天花会开13111 小时前
Supabase 自部署 Edge Functions 超时从 60s 延长到 360s 完整复盘
运维·云原生
当下新鲜事12 小时前
脱硫脱硝塔动力系统科普:四方DL500变频器工作原理解析
大数据·运维·物联网·业界资讯