Immich 外部库:把硬盘上已有的照片目录直接挂进照片库
把十年照片灌进 Immich,最大的心理障碍是「文件要搬家吗」——已经按目录组织好的照片库,拷进 UPLOAD_LOCATION 既费空间又打乱结构。外部库(External Libraries) 是官方给这批用户的答案:文件原地不动,Immich 直接读进来。
概念与挂载
外部库 = 在 docker-compose 里把一个已有目录挂载进容器,然后在 Immich 里把这个路径登记为某用户的外部库。之后的动作:Immich 扫描该目录,把其中的照片视频登记进时间线——不复制、不移动。

操作骨架:
- compose 文件的
immich-server下加一行 volume 挂载(例如- /mnt/photos:/mnt/photos:ro); - 网页端创建外部库,填入容器内路径;
- 手动触发一次扫描,照片开始进入时间线。
读写模式的选择:这决定了四件事
- 读写库(默认):Immich 可以写这个目录——能写 XMP 旁路文件(编辑记录的落地形式),删除回收站清空时能真删原文件,扫描期间可改导入规则;
- 只读库(挂载加
:ro):Immich 对该目录只读。代价明确:编辑功能不可用(没法写 XMP,元数据改不了);照片进回收站、清空时因为删不动原文件,会「复活」回时间线。
取舍口诀:想让 Immich 全权管理 → 读写;想保证 Immich 绝对不碰原始文件 → 只读。两个模式都合法,选错的症状在 常见问题排查 里都有对应条目。
扫描机制
- 手动扫描:随时触发,适合刚挂载或批量改完文件后;
- 定时扫描:按库设置扫描间隔(可自定义),增量识别新文件;
- 监控(Watch):支持文件系统事件的外部库可以做到「文件一落盘就登记」。
外部库的去重逻辑要留意:按内容哈希的去重发生在单个库内部,且外部库不参与上传区的去重——同一张图既在外部库又上传过一次的话,时间线可能出现两张,需要自己清理。
与其他导入路径的分工
| 场景 | 用什么 |
|---|---|
| 硬盘上已有的、还想保持原样的目录 | 外部库 |
| 手机照片持续进来 | 手机自动备份 |
| 谷歌相册 Takeout 大搬家 | immich-go 导入方案 |
| 命令行批量上传、按目录建相册 | CLI 上传 |
| 一锤子买卖的零散文件 | 网页端拖拽上传 |
外部库用户的备份提醒
外部库的文件不在 UPLOAD_LOCATION 里——备份清单 上那几个目录不包含它。挂了外部库的家庭,文件层备份要覆盖挂载源目录,别让外部库成为备份体系的漏网之鱼。