---
title: 备份、恢复与升级
description: 同时保护数据库、会话、工作文件和容器身份。
lastVerified: 2026-09-23
---

# 5.2 备份、恢复与升级

完整备份包含 PostgreSQL、DSH 会话与配置、工作文件以及数据库口令。以下命令针对 Compose 安装，在原源码目录执行，使用一个新的备份目录。

## 1. 停止写入并备份

先处理正在执行的工作。下面是 macOS / Linux shell 命令：

```sh
umask 077
mkdir backup
docker compose stop app
docker compose exec -T db pg_dump -U teloa -d teloa -Fc > backup/database.dump
docker compose run -T --rm --no-deps --entrypoint tar app -C /data -czf - dsh teloa > backup/app.tar.gz
docker compose run -T --rm --no-deps --entrypoint cat app /run/teloa-secrets/postgres-password > backup/postgres-password
docker compose start app
```

每条导出命令应成功结束；文件存在不代表有效，失败可能留下空文件。备份包含凭据和工作资料，应保存到受控的加密存储。

## 2. 在独立副本恢复

使用相同版本源码和镜像。确认新项目名 `teloa-restore` 和端口 `3107` 尚未使用；以下流程不能用于覆盖已有工作库。

**恢复副本可能带有启用的自动化和模型凭据。启动应用前确认不会重复执行真实业务，先在受控网络或停用计划的副本验证。**

先恢复口令，再启动空数据库：

```sh
docker compose -p teloa-restore run -T --rm --no-deps --entrypoint sh init -c 'cat > /data/secrets/postgres-password && chmod 440 /data/secrets/postgres-password' < backup/postgres-password
docker compose -p teloa-restore up -d db
docker compose -p teloa-restore ps
```

等待数据库健康，再恢复数据和工作文件：

```sh
docker compose -p teloa-restore exec -T db pg_restore --exit-on-error --no-owner -U teloa -d teloa < backup/database.dump
docker compose -p teloa-restore run -T --rm --no-deps --entrypoint tar app -C /data -xzf - < backup/app.tar.gz
TELOA_PORT=3107 docker compose -p teloa-restore up -d --no-build
```

使用副本的新认证链接进入，核对同事、群、任务、资料和一份工作文件的身份与内容，不只看首页能否打开。验证后停止副本。

## 升级和回退

记录源码版本、镜像摘要和项目名，先在隔离副本检查目标版本。正式升级前完成备份，再在原目录执行 `docker compose up -d --build`。

数据库或会话格式变化后，旧镜像不一定能读取新数据。回退需要旧版本和升级前完整备份配套，不能只改镜像标签。

源码模式的数据位置见[配置与数据位置](https://docs.teloa.ai/markdown/deploy/configuration.md)。直接复制运行中的 PostgreSQL 数据目录不能替代一致备份。
