1. 首页 > 技术教程 > 正文

AI 工具备份和迁移教程:配置文件、数据库和模型目录

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

zhujixuan TASK 168

为什么 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