在 Linux 上“备份 Swagger”通常取决于你使用的是哪种 Swagger 形态。下面我按最常见的几种场景给你一套完整可用的备份方案,你可以对号入座。
| 场景 | 要备份的内容 |
|---|---|
| ✅ Swagger UI(前端) | 静态文件 / 容器 / Nginx |
| ✅ Swagger API 文档(JSON / YAML) | /v2/api-docs、openapi.yaml |
| ✅ Spring Boot + Swagger | 接口代码 + 文档接口 |
| ✅ Swagger Editor | 编辑文件 |
| ✅ API 网关 / 微服务 | 聚合 Swagger 文档 |
curl http://localhost:8080/v2/api-docs > swagger-backup.json
或 OpenAPI 3:
curl http://localhost:8080/v3/api-docs > openapi-backup.json
✅ 这是最推荐的备份方式 ✅ 可用于:
#!/bin/bash
BACKUP_DIR=/data/backup/swagger
mkdir -p $BACKUP_DIR
DATE=$(date +%F)
curl -s http://localhost:8080/v2/api-docs > $BACKUP_DIR/swagger-$DATE.json
加入 crontab:
crontab -e
0 2 * * * /opt/scripts/backup-swagger.sh
cp -r /usr/share/nginx/html/swagger /backup/swagger-ui-$(date +%F)
或直接打包:
tar czf swagger-ui-backup.tar.gz /usr/share/nginx/html/swagger
docker cp swagger-ui-container:/usr/share/nginx/html ./swagger-ui-backup
或导出镜像:
docker commit swagger-ui-container swagger-ui-backup
docker save swagger-ui-backup > swagger-ui-backup.tar
重点是:代码 + 文档接口
tar czf springboot-backup.tar.gz /opt/app
或使用 Git(强烈推荐):
git remote -v
git push
springfox-boot-starter
或:
springdoc-openapi-starter-webmvc-ui
cp swagger.yaml /backup/swagger-$(date +%F).yaml
git add swagger.yaml
git commit -m "Backup swagger"
git push
API 服务 → 定时导出 JSON → Git / MinIO / NFS
示例目录:
/backup/swagger/
├── user-service-2026-01-21.json
├── order-service-2026-01-21.json
└── gateway-aggregate.json
curl -X POST http://localhost:8080/swagger-restore \
-d @swagger-backup.json
或使用 Swagger Editor 直接导入 JSON / YAML。
✅ 备份 JSON,而不是页面 ✅ 与代码 Git 仓库分离 ✅ 定期 + 自动 ✅ 保留版本历史 ✅ 生产环境至少每日一份
你可以直接告诉我:
1️⃣ 你是 Spring Boot / Node / PHP / 微服务?
2️⃣ Swagger 是 UI 还是文档接口?
3️⃣ 用的是 Docker 还是裸机?
我可以给你一份完全针对你环境的备份脚本 ✅