日常折腾

Immich手动恢复记录

deepseek写的immich手动恢复过程,先留存以备不时之需

🔧 恢复步骤

  1. 准备新环境
    • 在新机器上,使用你之前备份的 .env 和 docker-compose.yml 文件搭建好新的 Immich 环境,但暂时不要启动
    • 在 .env 文件中,将 UPLOAD_LOCATION 修改为你新的数据目录路径,例如 UPLOAD_LOCATION=D:\new_immich_storage\
  2. 还原媒体数据
    • 将网盘备份的整个 immich_storage 文件夹(包含 upload/thumbs/encoded-video/profile/backups/ 等所有子目录-2)完整复制到新路径 D:\new_immich_storage\
  3. 启动并恢复数据库
    • 首先,只启动数据库容器:执行 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
  4. 启动所有服务
    • 数据库恢复成功后,执行 docker compose up -d 启动所有 Immich 服务。

⚠️ 关键注意事项

  • 数据库是核心:你的媒体文件(照片、视频)只是文件,而所有关于“谁拍的”、“在哪拍的”、“在哪个相册”等信息都存储在数据库中。因此,必须先恢复数据库,再让 Immich 应用去读取媒体文件,否则 Immich 会认为你是一个全新的空库。
  • “备份”文件夹的角色:你网盘备份里的 backups 文件夹至关重要,它保存了 Immich 每天自动生成的数据库备份。恢复时需要用到这里面的 .sql.gz 文件。
  • 关于“实时备份”:你提到已将文件夹实时备份到网盘,这是一个很好的习惯。但在恢复时,请确保你复制到新目录的是一个完整且一致的备份集,特别是 backups 文件夹里要有可用的数据库备份文件。
  • 避免数据不一致:官方文档提醒,如果数据库中的文件路径与实际文件路径不匹配,Immich 可能会报错-10。按照上述步骤,先恢复数据库再启动服务,可以避免这个问题。从 v1.136.0 版本开始,Immich 甚至能自动检测并处理这种路径变化。