主机资讯与使用指南
Docker 应用备份与迁移:配置、数据目录和恢复顺序
区分 Compose 配置与应用数据,备份 SQLite 应用、数据库和上传文件,并在新 VPS 恢复。
迁移容器之前,先找数据在哪里
Compose 文件说明容器怎样启动,数据通常在绑定目录或命名卷。先打开 compose.yaml 查看 volumes,再用 docker inspect 对照实际挂载;镜像可以重新下载,数据库和上传文件需要自己保存。
sudo docker compose ps
sudo docker inspect 容器名 --format "{{json .Mounts}}"小型 SQLite 应用可以停机后打包
以 /srv/memos/data 保存数据的单实例应用为例,先停止应用,再把数据和配置打包到项目目录以外。下面的目录必须换成自己的实际位置,确认 tar 包生成后再启动服务。
cd /srv/memos
sudo docker compose stop
sudo tar -czf /srv/memos-backup-$(date +%F).tar.gz compose.yaml data
sudo docker compose start打包结束后把备份复制到另一台机器或外部存储。打包数据库正在写入的文件可能得到不一致的副本;MySQL、PostgreSQL 使用它们各自的逻辑导出或一致性备份方式。
有数据库的应用分别保存什么
保存数据库导出、上传目录、Compose 文件与 .env。n8n 等应用还依赖加密密钥,只有数据库却缺少原密钥,可能无法恢复已保存的凭据。备份文件按时间放在同一组,记录软件与数据库版本。
先在新 VPS 恢复,再切换域名
新机器安装 Docker,复制配置与数据,保持正确的目录权限。数据库按对应版本恢复后启动应用,检查登录、文章、附件和后台任务。确认新实例能完整工作,再把域名指向新服务器。
需要短暂停写的应用,在最终迁移时停下旧实例并做最后一份一致数据;不要让两个实例同时向各自独立数据库写入后再尝试合并。
恢复完成后保留回退资料
保留旧机器数据与迁移前备份,直到新实例完成必要检查。清理容器不需要删除数据卷;不要用 compose down -v 代替普通停止操作。下一次升级沿用这套备份与恢复记录。
命名卷也要保存
Compose 项目不一定把数据放在当前目录。先用 docker compose config 查看 volumes,再用 docker volume inspect 查看实际卷;项目名前缀也会影响卷名。
数据库卷优先使用数据库工具导出。一般文件卷可在停止写入后挂到临时工具容器中打包,保存时保留目录、权限和所需配置;不要只复制 compose.yml。
恢复后怎样判断成功
在目标机器启动对应版本服务后,分别检查登录、历史数据、附件和新增写入。数据库记录存在但图片打不开,通常还需检查文件卷、目录和挂载路径。
通知、Webhook、定时任务与外部服务白名单也检查一次。应用首页能打开,只证明入口已经工作,不能代表全部数据恢复。
保留原数据再升级版本
先用原版本恢复,再按软件支持的升级路径更新。PostgreSQL 等数据库大版本不能直接复用旧数据目录,使用逻辑导出恢复或对应升级工具。
新环境验证完成前保留旧机和备份。docker compose down -v 会删除项目卷,不用于普通重启或镜像更新。