# imgrateRclone **Repository Path**: john77/imgrate-rclone ## Basic Information - **Project Name**: imgrateRclone - **Description**: 服务器迁移和管理系统。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-05 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 服务器迁移和备份系统 ## 功能特性 ### 主要功能 1. **服务器管理**:添加、编辑、删除服务器信息 2. **迁移任务管理**:创建、执行、监控迁移任务 3. **备份任务管理**:创建、执行、调度备份任务 4. **操作日志**:记录所有操作日志 5. **用户管理**:用户权限管理 ### 迁移功能 - 支持全系统迁移和部分目录迁移 - 支持Linux和Windows服务器 - 支持通过服务器获取并选择源路径 - 支持选择要迁移的磁盘(全系统迁移) - 支持任务完成后再次执行功能 - 自动验证迁移结果 - 自动清理临时文件 - 详细的操作系统错误日志输出 - 禁用Hibernate SQL查询日志,减少日志干扰 - **自动检查并安装rclone**:在迁移开始前自动检查源和目标服务器是否安装了rclone,如果没有则自动安装 ### 备份功能 - 支持服务器到服务器备份 - 支持服务器到对象存储备份(S3、OSS、COS等) - 支持定时任务调度(一次性、每天、每周、每月、自定义CRON) ## 技术栈 ### 后端 - Spring Boot 2.7.0 - Spring Data JPA - Spring Security - MySQL 8.0+ - JSch (SSH客户端) - Lombok - JWT ### 前端 - Vue.js 2.x - Element UI - Axios - Vuex - Vue Router ## 快速开始 ### 环境要求 - JDK 11+ - MySQL 8.0+ - Node.js 14+ - npm 6+ ### 后端部署 1. 创建MySQL数据库 ```sql CREATE DATABASE imgrate CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 执行数据库初始化脚本 ```bash mysql -u root -p imgrate < database/init.sql ``` 3. 修改配置文件 ```yaml # src/main/resources/application-dev.yml spring: datasource: url: jdbc:mysql://localhost:3306/imgrate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root ``` 4. 编译和运行 ```bash mvn clean install mvn spring-boot:run ``` 或者使用启动脚本: ```bash start-backend.bat ``` ### 前端部署 1. 安装依赖 ```bash cd frontend npm install ``` 2. 开发环境运行 ```bash npm run dev ``` 3. 生产环境构建 ```bash npm run build ``` 或者使用启动脚本: ```bash start-frontend.bat ``` ## API接口 ### 认证接口 - POST /api/auth/login - 用户登录 - POST /api/auth/logout - 用户登出 - GET /api/auth/verify - 验证Token ### 服务器管理接口 - POST /api/servers - 创建服务器 - GET /api/servers - 获取所有服务器 - GET /api/servers/{id} - 获取服务器详情 - PUT /api/servers/{id} - 更新服务器 - DELETE /api/servers/{id} - 删除服务器 - GET /api/servers/os/{osType} - 按操作系统类型获取服务器 ### 服务器测试接口 - POST /api/servers/{id}/test-connection - 测试服务器连接 - GET /api/servers/{id}/disk-info/linux - 获取Linux服务器磁盘信息 - GET /api/servers/{id}/disk-info/windows - 获取Windows服务器磁盘信息 - GET /api/servers/{id}/directory-structure/linux - 获取Linux服务器目录结构 - GET /api/servers/{id}/directory-structure/windows - 获取Windows服务器目录结构 ### 迁移任务接口 - POST /api/migrations - 创建迁移任务 - GET /api/migrations - 获取所有迁移任务 - GET /api/migrations/{id} - 获取迁移任务详情 - PUT /api/migrations/{id}/status - 更新任务状态 - DELETE /api/migrations/{id} - 删除迁移任务 - POST /api/migrations/{id}/execute - 执行迁移任务 - GET /api/migrations/status/{status} - 按状态获取迁移任务 ### 备份任务接口 - POST /api/backups - 创建备份任务 - GET /api/backups - 获取所有备份任务 - GET /api/backups/{id} - 获取备份任务详情 - PUT /api/backups/{id} - 更新备份任务 - DELETE /api/backups/{id} - 删除备份任务 - POST /api/backups/{id}/execute - 执行备份任务 - GET /api/backups/status/{status} - 按状态获取备份任务 ### 操作日志接口 - GET /api/logs - 获取所有操作日志 - GET /api/logs/user/{username} - 按用户名获取操作日志 - GET /api/logs/operation/{operationType} - 按操作类型获取操作日志 ## 迁移步骤 ### 全系统迁移 1. 连接到源服务器 2. 连接到目标服务器 3. 验证源服务器环境 4. 验证目标服务器环境 5. 准备迁移数据 6. 创建系统快照 7. 传输系统快照 8. 验证迁移结果 9. 清理临时文件 ### 部分目录迁移 1. 连接到源服务器 2. 连接到目标服务器 3. 验证源服务器环境 4. 验证目标服务器环境 5. 准备迁移数据 6. 扫描目录结构 7. 传输目录数据 8. 验证迁移结果 9. 清理临时文件 ## 备份功能 ### 备份类型 1. **服务器到服务器备份**:将数据从一个服务器备份到另一个服务器 2. **服务器到对象存储备份**:将数据备份到云存储服务(S3、OSS、COS等) ### 调度类型 1. **一次性**:只执行一次 2. **每天**:每天执行 3. **每周**:每周执行 4. **每月**:每月执行 5. **自定义CRON**:使用CRON表达式自定义调度 ### 备份步骤 1. 连接到源服务器 2. 验证源服务器环境 3. 准备备份数据 4. 执行备份 5. 验证备份结果 6. 清理临时文件 ## 使用说明 ### 迁移功能使用 1. 在服务器管理页面添加源服务器和目标服务器 2. 在迁移任务页面创建迁移任务 3. 对于部分目录迁移,可以通过"选择"按钮从服务器获取并选择源路径和目标路径 4. 对于全系统迁移,可以选择要迁移的磁盘 5. 执行迁移任务并监控进度 ### 备份功能使用 1. 在备份任务页面创建备份任务 2. 选择备份类型(服务器到服务器或对象存储) 3. 设置调度类型和时间 4. 执行备份任务或等待定时执行 ## 注意事项 1. 确保源服务器和目标服务器网络连通 2. 确保有足够的磁盘空间进行迁移和备份 3. 迁移和备份过程可能需要较长时间,请耐心等待 4. 建议在业务低峰期执行迁移和备份操作