文件备份系统已开源

一个基于 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

相关推荐
X1A0RAN1 小时前
Jenkins流水线日志彩色打印输出
运维·jenkins
金融RPA机器人丨实在智能2 小时前
数据库运维Agent比价指南:国产自研产品适配国产数据库兼容性更好吗?
运维·数据库·人工智能·ai
BomanGe12 小时前
NSK紧凑型FA系列精密滚珠丝杠技术解析
运维·服务器·网络·经验分享·规格说明书
zh路西法2 小时前
基于yaml-cpp的C++参数服务器设计2:多级参数配置
linux·服务器·c++
去码头整点薯条982 小时前
网络实验报告9
运维·服务器·网络
Sunny_20228374 小时前
打开从AutoCAD的不同版本粘贴到Ms Word的OLE对象
运维·pccad插件、cad·pccad个人免费版·免费cad插件
A15362554 小时前
六轴工业机械臂厂家怎么选?评估维度与选型参考
大数据·服务器·人工智能
木雷坞4 小时前
LiteLLM Docker 部署:config.yaml、Master Key 和 Postgres 配置
运维·docker·容器·litellm
AC赳赳老秦4 小时前
OpenClaw + 阿里云 OSS 自动化:批量上传下载文件、自动备份本地数据到云端
运维·数据库·阿里云·自动化·云计算·deepseek·openclaw