deepseek写的immich手动恢复过程,先留存以备不时之需
🔧 恢复步骤
- 准备新环境:
- 在新机器上,使用你之前备份的
.env和docker-compose.yml文件搭建好新的 Immich 环境,但暂时不要启动。 - 在
.env文件中,将UPLOAD_LOCATION修改为你新的数据目录路径,例如UPLOAD_LOCATION=D:\new_immich_storage\。
- 在新机器上,使用你之前备份的
- 还原媒体数据:
- 将网盘备份的整个
immich_storage文件夹(包含upload/,thumbs/,encoded-video/,profile/,backups/等所有子目录-2)完整复制到新路径D:\new_immich_storage\。
- 将网盘备份的整个
- 启动并恢复数据库:
- 首先,只启动数据库容器:执行
docker compose up -d immich_postgres。等待它完全启动。 - 然后,恢复数据库:在
D:\new_immich_storage\backups\目录下,找到最新的.sql.gz数据库备份文件-2。使用以下命令将其导入新数据库(注意替换文件名为你的实际文件名):bash复制下载# 将备份文件导入到新的 PostgreSQL 数据库 gunzip -c D:\new_immich_storage\backups\你的备份文件.sql.gz | docker exec -i immich_postgres psql –username=postgres
- 首先,只启动数据库容器:执行
- 启动所有服务:
- 数据库恢复成功后,执行
docker compose up -d启动所有 Immich 服务。
- 数据库恢复成功后,执行
⚠️ 关键注意事项
- 数据库是核心:你的媒体文件(照片、视频)只是文件,而所有关于“谁拍的”、“在哪拍的”、“在哪个相册”等信息都存储在数据库中。因此,必须先恢复数据库,再让 Immich 应用去读取媒体文件,否则 Immich 会认为你是一个全新的空库。
- “备份”文件夹的角色:你网盘备份里的
backups文件夹至关重要,它保存了 Immich 每天自动生成的数据库备份。恢复时需要用到这里面的.sql.gz文件。 - 关于“实时备份”:你提到已将文件夹实时备份到网盘,这是一个很好的习惯。但在恢复时,请确保你复制到新目录的是一个完整且一致的备份集,特别是
backups文件夹里要有可用的数据库备份文件。 - 避免数据不一致:官方文档提醒,如果数据库中的文件路径与实际文件路径不匹配,Immich 可能会报错-10。按照上述步骤,先恢复数据库再启动服务,可以避免这个问题。从 v1.136.0 版本开始,Immich 甚至能自动检测并处理这种路径变化。