{"id":19387888,"url":"https://github.com/helloxz/xp-backup","last_synced_at":"2026-03-04T23:01:43.691Z","repository":{"id":220120726,"uuid":"750701911","full_name":"helloxz/xp-backup","owner":"helloxz","description":"Based on Docker, the data backup solution automatically backs up MySQL databases and file directories to Amazon S3.","archived":false,"fork":false,"pushed_at":"2024-10-31T07:49:37.000Z","size":28,"stargazers_count":36,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T23:39:04.632Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helloxz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-31T06:27:59.000Z","updated_at":"2025-01-05T12:21:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c1ce1c8-1580-4293-989f-64ece269896f","html_url":"https://github.com/helloxz/xp-backup","commit_stats":null,"previous_names":["helloxz/xp-backup"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/helloxz/xp-backup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloxz%2Fxp-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloxz%2Fxp-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloxz%2Fxp-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloxz%2Fxp-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helloxz","download_url":"https://codeload.github.com/helloxz/xp-backup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloxz%2Fxp-backup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30098085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T22:49:54.894Z","status":"ssl_error","status_checked_at":"2026-03-04T22:49:48.883Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T10:11:02.050Z","updated_at":"2026-03-04T23:01:43.675Z","avatar_url":"https://github.com/helloxz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xp-backup\n\n基于Docker容器的备份方案，使用restic工具定期将您的MySQL数据库和文件加密备份到AWS S3。\n\n### 特性\n\n* 加密备份\n* 增量备份\n* 自动备份MySQL数据库\n* 支持添加多个备份路径\n* 支持备份到S3或SFTP\n* 支持路径排除\n* 支持快捷命令查看备份列表（快照）\n* 支持快捷命令自动恢复指定备份（快照）\n\n\n## 安装使用\n\n在使用之前，请确保您熟悉Linux并掌握了Docker容器使用，此工具推荐给运维人员使用，小白请勿尝试！！！\n\n1) 已经安装Docker环境，并安装了Docker Compose工具\n2) 创建`docker-compose.yaml`文件，内容为：\n\n```yaml\nversion: '3'\nservices:\n xp-backup:\n   image: helloz/xp-backup\n   container_name: xp-backup\n   restart: always\n   environment:\n      - PATH=/opt/xp-backup:$PATH\n   volumes:\n     - ./data:/opt/xp-backup/data\n     - /data/apps:/opt/xp-backup/backup/apps\n     - /data/backup/mysql:/opt/xp-backup/backup/mysql\n     # 如果使用SFTP备份方式，还需要挂载私钥文件\n     # - ./data/id_rsa:/root/.ssh/id_rsa\n     # - ~/.ssh/known_hosts:/root/.ssh/known_hosts:ro\n   network_mode: \"host\"\n```\n\n如果您有更多需要备份的目录，可以继续添加挂载，需要挂载到容器内部的`/opt/xp-backup/backup`目录下，比如：\n\n* `/test1/dir:/opt/xp-backup/backup/test1`\n* `/test2/dir:/opt/xp-backup/backup/test2`\n\n输入命令`docker-compose up -d`启动容器，启动完毕后回在您本地挂载目录`./data`下生成2个隐藏文件，分别是：\n\n* `.env`:环境变量文件\n* `.restic_pass`: restic密码文件（加密备份和解密需要）\n\n您可以输入命令`ls -al`来查看这2个文件，首次运行后自动生成这2个文件，然后删除容器：`docker-compose down`，并对这2个文件做出修改，修改完毕后再次启动容器：`docker-compose up -d`\n\n**`.env`环境变量说明：**\n\n```bash\n# 备份目标类型，支持s3、sftp，默认s3\nSTORAGE_TYPE=\"s3\"\n# MySQL连接地址\nDB_HOST=127.0.0.1\n# MySQL用户名\nDB_USER=root\n# MySQL密码\nDB_PASSWORD=xxx\n#需要排除的数据库，用|分割\nDB_EXCLUDE=\"test|mysql|information_schema|sys\"\n\n# AWS_ACCESS_KEY_ID\nAWS_ACCESS_KEY_ID=xxx\n# AWS_SECRET_ACCESS_KEY\nAWS_SECRET_ACCESS_KEY=xxx\n# AWS_S3_URL，格式如：s3.us-west-002.backblazeb2.com\nAWS_S3_URL=s3.us-west-002.backblazeb2.com\n# AWS_BUCKET_NAME，存储桶名称\nAWS_BUCKET_NAME=\"bucket_name\"\n\n#restic密码，用于加密备份和解密恢复，一旦设置不要修改\nRESTIC_PASSWORD=\"xp_backup_password\"\n\n#需要排除的目录，多个目录使用空格分割，比如：--exclude=dir1 --exclude=dir2\nEXCLUDE_DIRS='--exclude=default'\n\n# 定时备份MySQL的时间，默认每天凌晨2点\nCRON_TIME_MYSQL=\"0 2 * * *\"\n# 定时备份文件夹的时间，默认每天凌晨3点\nCRON_TIME_DIR=\"0 3 * * *\"\n# SFTP用户名\nSFTP_USER=\"sftp_user\"\n# SFTP主机\nSFTP_HOST=\"sftp_host\"\n# SFTP端口\nSFTP_PORT=22\n```\n\n**.restic_pass 密码文件** \n\n需要自行设置一个复制的字符串，默认为：`xp_backup_password`，一旦设置后，请不要随意修改。\n\n`.env`和`.restic_pass`设置完毕后，输入命令：`docker-compose restart`重启一次容器，至此已经全部设置完毕，容器将根据您的定时任务定期将MySQL数据库和文件数据加密备份至AWS S3\n\n**补充**\n\n如果您选择使用SFTP作为备份方式，需要进行以下操作：\n\n1. 修改`.env`为`STORAGE_TYPE=\"sftp\"`\n2. 设置SFTP相关参数，包括`STORAGE_TYPE`/`SFTP_HOST`/`SFTP_PORT`\n3. 容器启动之前先执行`ssh -i /path/to/your_private_key \u003cuser\u003e@\u003chost\u003e -p \u003cport\u003e`\n   1. `/path/to/your_private_key`私钥文件路径\n   2. `\u003cuser\u003e`服务器用户名\n   3. `\u003chost\u003e`服务器IP\n   4. `\u003cport\u003e`服务器端口\n  \n\u003e 注意：如果不提前执行SSH命令登录，可能会出现交互式询问，`restic`无法绕过将导致备份失败！\n\n### 常用命令\n\n* 立即备份MySQL：`docker exec -it xp-backup backup_mysql.sh`\n* 立即备份文件数据：`docker exec -it xp-backup restic_backup.sh`\n* 查看备份列表：`docker exec -it xp-backup tool.sh list`\n* 清理并保留最近60个快照：`docker exec -it xp-backup tool.sh clear`\n* 将指定快照恢复到指定目录下：`docker exec -it xp-backup tool.sh restore snapshot_id target_path`\n  * `snapshot_id`：快照ID\n  * `target_path`：目标路径（将数据恢复到这个路径）\n\n### 技术支持\n\n如果遇到BUG或者新功能请求，请在[issues](https://github.com/helloxz/xp-backup/issues)进行反馈，如果需要人工技术支持（需要付费），通过下面方式联系我。\n\n* 微信：`xiaozme`\n* Telegram：`xiaozme`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloxz%2Fxp-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelloxz%2Fxp-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloxz%2Fxp-backup/lists"}