部署 AI 工具最容易被忽略的一步就是备份。很多人在 VPS 上跑着 Ollama、Open WebUI、n8n、Claude Code 或者自己的 AI Agent,一旦系统重装、换服务器或者硬盘故障,才发现配置文件、对话数据库、下载的模型全没了。本文直接给出一套能落地的备份和迁移方案,覆盖配置文件、数据库和模型目录,适合在 VPS 上跑 AI 工具的场景,包括 AI Agent、MCP、Hermes Agent 等。

为什么 AI 工具备份比普通应用更复杂
普通网站备份主要是代码和数据库,但 AI 工具多了两个特殊部分:
•模型文件:动辄几个 GB 甚至几十 GB,重新下载非常慢,而且有些模型源可能被墙或限速。
•配置文件:包含 API Key、模型路径、系统 Prompt、Agent 行为定义等敏感内容,丢失后需要重新配置。
•对话/知识库数据:Open WebUI 的聊天记录、n8n 的工作流定义、知识库向量数据库,这些是长期积累的资产。
另外,很多 AI 工具运行在 Docker 容器里,卷映射和网络配置也要一并备份。
备份三要素:配置文件、数据库和模型目录
配置文件(含环境变量和密钥)
大多数 AI 工具通过 `.env`、`config.yaml`、`config.json` 或 Docker Compose 的 `environment` 字段来配置。备份时要特别注意:
• 不要直接复制 `.env` 到公开仓库,里面可能包含 OpenAI、Claude 或 DeepSeek 的 API Key。
• 建议用 `gpg` 或者 `openssl` 加密后归档,或者单独保存到一个加密的 Vault 里。
• 如果使用 Docker Compose,`docker-compose.yml` 和 `.env` 一起备份。
备份命令示例(以 Ollama 和 Open WebUI 为例):
tar -czf ai_configs_$(date +%Y%m%d).tar.gz \
~/.ollama \
~/.open-webui \
/opt/n8n/.n8n \
/etc/hermes-agent/config.yaml
注意:n8n 的数据库和工作流默认存储在 SQLite 文件或 Postgres 中,如果是 SQLite,文件路径通常在 `~/.n8n/database.sqlite`。
数据库(对话、工作流、知识库)
大部分 AI 工具使用 SQLite 或 PostgreSQL。SQLite 备份简单,直接复制文件即可,但建议先停止服务或使用 `.backup` 命令。PostgreSQL 建议用 `pg_dump`。
以 Open WebUI 为例(默认 SQLite):
docker stop open-webui
cp ~/.open-webui/data/webui.db ~/backups/webui_$(date +%Y%m%d).db
docker start open-webui
如果是 n8n 的 PostgreSQL:
pg_dump -h localhost -U n8n_user -d n8n_db > n8n_backup_$(date +%Y%m%d).sql
模型目录(Ollama、vLLM、LocalAI)
模型文件是备份中的大头。Ollama 的模型默认存储在 `~/.ollama/models`。如果模型不大(比如 7B 以下),可以打包压缩。如果是 70B 以上的大模型,建议直接用 `ollama pull` 重新拉取,或者用 `rsync` 增量同步到备份机。
检查模型大小:
du -sh ~/.ollama/models
如果大于 20GB,建议只备份模型清单,迁移时重新拉取。备份清单:
ollama list > ~/backups/ollama_model_list.txt
实战:从旧 VPS 完整备份并迁移到新 VPS
下面是一个完整的迁移流程,假设旧 VPS IP 为 `192.168.1.10`,新 VPS IP 为 `192.168.1.20`,两者都跑 Ubuntu 22.04。
步骤1:在旧 VPS 上打包所有数据
mkdir -p ~/ai_backup
tar -czf ~/ai_backup/docker_compose_backup.tar.gz /opt/docker-projects/
tar -czf ~/ai_backup/configs.tar.gz \
~/.ollama \
~/.open-webui \
~/.n8n \
/etc/hermes-agent
docker stop n8n
cp ~/.n8n/database.sqlite ~/ai_backup/
docker start n8n
ollama list > ~/ai_backup/ollama_models.txt
tar -czf full_ai_backup_$(date +%Y%m%d).tar.gz ~/ai_backup/
步骤2:传输到新 VPS
使用 `scp` 或 `rsync`:
scp full_ai_backup_20250401.tar.gz root@192.168.1.20:/root/
如果文件很大,建议用 `rsync` 断点续传:
rsync -avzP full_ai_backup_20250401.tar.gz root@192.168.1.20:/root/
步骤3:在新 VPS 上恢复
tar -xzf full_ai_backup_20250401.tar.gz -C /root/
cp -r ~/ai_backup/.ollama ~/
cp -r ~/ai_backup/.open-webui ~/
cp -r ~/ai_backup/.n8n ~/
cp -r ~/ai_backup/hermes-agent /etc/
cp ~/ai_backup/database.sqlite ~/.n8n/
tar -xzf ~/ai_backup/docker_compose_backup.tar.gz -C /opt/
步骤4:重新拉取模型(如果需要)
如果模型文件没有备份(太大),在新 VPS 上安装 Ollama 后,直接按清单拉取:
cat ~/ai_backup/ollama_models.txt | awk '{print $1}' | xargs -I {} ollama pull {}
步骤5:启动服务并验证
cd /opt/docker-projects && docker-compose up -d
docker logs open-webui –tail 20
docker logs n8n –tail 20
curl http://localhost:3000/api/health
老鸟叮嘱避坑模块
•API Key 环境变量:迁移后记得检查新 VPS 上的 `.env` 文件,确保 API Key 没有被写死或泄露。很多人在旧 VPS 的 bashrc 里 export 了密钥,迁移后忘了设置,导致服务启动但无法调用 API。
•文件权限:Docker 容器内的用户 UID 可能和宿主机不同。恢复配置文件后,建议先 `chown -R 1000:1000 ~/.open-webui`(具体 UID 看容器镜像),否则容器可能无法写入。
•数据库版本兼容:n8n 或 Open WebUI 升级版本后,旧数据库可能不兼容。迁移前记录旧软件版本,新 VPS 安装相同版本,再逐步升级。
•端口冲突:新 VPS 可能已经有其他服务占用 3000、8080 等端口。迁移前先 `netstat -tulpn | grep :端口` 检查。
•Docker 网络:如果多个容器通过自定义网络通信(比如 n8n 连接 Redis),需要在新 VPS 上重建相同的网络。备份 `docker network ls` 信息。
FAQ
Q:备份 AI 工具时,模型文件一定要全部打包吗?
A:不一定。模型文件通常很大,且可以通过 `ollama pull` 重新下载。建议只备份模型清单,迁移时重新拉取。如果网络慢或者模型源不可用,可以备份常用的小模型(7B 以下),大模型按需拉取。
Q:迁移后 Open WebUI 的对话记录不见了,怎么办?
A:先检查数据库文件是否恢复正确。进入容器检查 `/app/backend/data/webui.db` 是否存在,并确认文件大小不为零。如果文件存在但内容为空,可能是权限问题导致容器无法读取。运行 `docker exec -it open-webui ls -la /app/backend/data/` 查看权限,必要时重新复制并调整所有者。
Q:n8n 的工作流备份除了 SQLite,还需要备份什么?
A:n8n 的工作流定义存储在数据库里,但凭证(Credentials)可能加密存储,依赖于 `N8N_ENCRYPTION_KEY` 环境变量。迁移时必须保持相同的加密密钥,否则凭证无法解密。建议在 `.env` 里记录 `N8N_ENCRYPTION_KEY`,并一起备份。
Q:如何自动化定期备份 AI 工具数据?
A:可以写一个 cron 脚本,每周打包配置文件、数据库和模型清单,上传到对象存储(如 S3、Backblaze B2)。注意:不要备份模型文件本身,只备份清单。数据库备份前建议先执行 `docker pause` 暂停容器,避免写操作冲突。
Q:MCP(Model Context Protocol)服务的配置文件有什么特别需要注意的?
A:MCP 的配置文件通常包含工具定义、API 端点、认证方式。注意备份 `mcp.json` 或 `mcp.yaml`,以及可能引用的本地脚本。迁移后要检查工具路径是否一致,比如 `/usr/local/bin/` 下的自定义脚本。
Q:备份文件可以放在 VPS 本地吗?
A:不建议。本地备份在硬盘故障时同样丢失。最好同时备份到另一台机器、NAS 或云存储。对于敏感配置文件,先加密再上传。
AI 工具备份迁移不是一次性工作,建议每次更新配置或新增模型后,顺手跑一遍备份脚本。把备份清单和恢复步骤文档化,遇到故障时能省下大量时间。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9950.html 商家投稿邮箱:zhujixuanblog@qq.com
