Swagger的核心数据(如API定义文件、配置文件、用户自定义文档)通常存储在特定目录(如Swagger UI项目目录、Node.js应用目录)或配置文件(如swagger.yaml/swagger.json、config.js)中。以下是针对CentOS系统的备份与恢复步骤,覆盖常见部署场景:
定位Swagger数据目录
根据Swagger的部署方式(如直接运行Jar包、Node.js应用、Apache集成),确定数据存储路径:
java -jar swagger-core-x.x.x.jar运行,数据通常在/path/to/swagger-core/target/classes(包含API定义文件)或/path/to/swagger-core/config(配置文件)。npm install swagger-ui-express运行,数据通常在/opt/swagger/swagger-ui(项目目录,含api.yaml/api.json)或/opt/swagger/node_modules/swagger-jsdoc(配置文件)。Alias /api-docs /var/www/html/swagger-ui/api.yaml),需备份/var/www/html/swagger-ui(API文档目录)和Apache配置文件/etc/httpd/conf/httpd.conf(含Swagger相关Alias指令)。确认备份权限
确保你对备份目录有读写权限(可使用ls -ld /path/to/directory查看权限,sudo chown -R user:user /path/to/directory修改权限)。
推荐使用tar命令(打包压缩,保留文件属性)或rsync命令(增量同步,适合远程备份):
# 进入Swagger数据目录的上级目录(避免备份路径过长)
cd /path/to/swagger-parent-directory
# 打包并压缩数据目录(替换为实际路径)
sudo tar -czvf swagger_backup_$(date +%F).tar.gz /path/to/swagger-data-directory
# 示例:备份/opt/swagger/swagger-ui目录
sudo tar -czvf swagger_ui_backup_$(date +%F).tar.gz /opt/swagger/swagger-ui
-c创建归档,-z用gzip压缩,-v显示详细过程,-f指定文件名(含日期便于区分)。# 本地备份(同步到同系统目录)
sudo rsync -avz /path/to/swagger-data-directory /path/to/backup-directory
# 远程备份(同步到远程服务器,替换为实际IP和用户名)
sudo rsync -avz -e ssh /path/to/swagger-data-directory user@remote_server:/path/to/remote/backup-directory
# 示例:将Swagger UI目录同步到远程服务器的/backup目录
sudo rsync -avz -e ssh /opt/swagger/swagger-ui root@192.168.1.100:/backup
-a归档模式(保留权限、时间戳),-v详细输出,-z压缩传输,-e ssh通过SSH加密传输(远程备份必需)。恢复前需停止Swagger相关服务(如Jar包进程、Node.js应用、Apache服务),避免文件冲突:
# 停止Jar包服务(若通过Jar运行)
ps -ef | grep "swagger-core-x.x.x.jar" | grep -v grep | awk '{print $2}' | xargs sudo kill -9
# 停止Node.js服务(若通过npm运行)
sudo systemctl stop swagger-ui # 若已配置为systemd服务
# 或直接杀死进程
ps -ef | grep "node index.js" | grep -v grep | awk '{print $2}' | xargs sudo kill -9
# 停止Apache服务(若集成Swagger)
sudo systemctl stop httpd
# 解压备份文件到目标目录(替换为实际路径)
sudo tar -xzvf swagger_backup_$(date +%F).tar.gz -C /path/to/restore-directory
# 示例:将备份恢复到/opt/swagger/swagger-ui目录
sudo tar -xzvf swagger_ui_backup_$(date +%F).tar.gz -C /opt/swagger/swagger-ui
-x解压,-z解压缩,-v显示过程,-C指定目标目录。# 从远程服务器恢复(替换为实际IP和路径)
sudo rsync -avz -e ssh user@remote_server:/path/to/remote/backup-directory /path/to/restore-directory
# 示例:从远程服务器恢复Swagger UI目录
sudo rsync -avz -e ssh root@192.168.1.100:/backup/swagger-ui /opt/swagger/
sudo chown -R user:user /path/to/restored-directory(替换为实际用户)。# 启动Jar包服务
nohup java -jar /path/to/swagger-core/target/swagger-core-x.x.x.jar > /dev/null 2>&1 &
# 启动Node.js服务
cd /opt/swagger/swagger-ui && npm start &
# 启动Apache服务
sudo systemctl start httpd
http://your_server_ip/swagger-ui/index.html),确认API文档显示正常。swagger.yaml、config.js),便于追溯历史版本。/etc/profile.d/java.sh、/etc/profile.d/node.sh),恢复时重新配置环境。以上步骤覆盖了CentOS环境下Swagger的常见备份恢复场景,可根据实际部署方式调整路径和命令。