挂载关系详解
本文用大白话讲解 AMMDS 的挂载关系,说明各个文件夹之间如何连接以及数据如何流转。
本文用大白话讲清楚 AMMDS 的挂载关系——也就是各个文件夹之间怎么连起来的,数据怎么在它们之间流转。
提示
如果你是第一次用 AMMDS,建议先看这篇,搞清楚挂载是怎么回事,后面部署和使用就不会搞丢数据或配错配置了。
一、部署时的挂载逻辑
1. 基本挂载配置
用 Docker Compose 部署 AMMDS 时,需要在 docker-compose.yml 文件里配置挂载目录:
啥是"挂载"? 挂载就是把宿主机(你的电脑/服务器)上的一个文件夹,映射到 Docker 容器(一个独立的"小盒子")里,让"小盒子"能读写这个文件夹。就像把 U 盘插到电脑上,电脑就能访问 U 盘里的文件一样。
volumes:
- ./data:/ammds/data # 挂载当前目录的 data 文件夹到容器的 /ammds/data
- ./db:/ammds/db # 挂载当前目录的 db 文件夹到容器的 /ammds/db
- ./download:/data/download # 挂载当前目录的 download 文件夹到容器的 /data/download
- ./media:/data/media # 挂载当前目录的 media 文件夹到容器的 /data/media
2. 目录说明
| 宿主机目录(你的电脑) | 容器目录("小盒子"里) | 干啥用的 |
|---|---|---|
./data | /ammds/data | 放 AMMDS 的配置文件和临时数据 |
./db | /ammds/db | 放 AMMDS 的数据库文件 |
./download | /data/download | 放下载好的、还没整理的电影文件 |
./media | /data/media | 放整理好的电影文件,给 Jellyfin 这类媒体服务器用 |
3. 部署挂载示意图
二、媒体整理的挂载逻辑
1. 整体架构
2. 宿主机跟 AMMDS 的关系
宿主机上的 /data/download(放未整理电影)通过 Docker 挂载功能,映射到 AMMDS 容器里的 /data/download。这样一来,AMMDS 就能看到宿主机上还没整理的那些电影文件,然后对它们进行刮削和整理。
简单说就是:
- 你电脑上的
/data/download↔ AMMDS 里看到的/data/download(是同一个地方) - AMMDS 扫描
/data/download里的电影文件 - 刮削整理完后,AMMDS 把整理好的电影存到
/data/media
提示
为啥要这么挂?
- AMMDS 得能读到没整理过的电影,才能进行刮削和整理,所以要挂载
/data/download - AMMDS 整理好的电影得放到 Jellyfin 也能看到的地方,所以要挂载
/data/media - 这样 AMMDS 和 Jellyfin 就能共用同一个媒体文件夹,不需要把电影复制两份
- 路径保持一致,你管理起来也更清爽
3. 宿主机跟 Jellyfin 的关系
宿主机上的 /data/media(放已整理电影)通过 Docker 挂载功能,映射到 Jellyfin 容器里的 /data/media。这样 Jellyfin 就能读到整理好的电影,用来搭建媒体库,给你提供在线看片服务。
简单说就是:
- 你电脑上的
/data/media↔ Jellyfin 里看到的/data/media(是同一个地方) - Jellyfin 扫描
/data/media里的电影 - 根据文件结构和元数据(电影信息),Jellyfin 建好媒体库,让你能分类、搜索和播放
提示
为什么 Jellyfin 只需要挂 /data/media?
- Jellyfin 只是个播放器/媒体服务器,只看整理好的成品,不需要管没整理的原始文件
- 整理好的电影已经有完整的信息和规整的文件结构,Jellyfin 拿来就能用
- 这样 Jellyfin 的配置更简单,也更安全
4. AMMDS 跟电影文件的关系
AMMDS 处理电影文件时,走的是这么一套流程:
- 扫描阶段:AMMDS 到
/data/download里找没整理过的电影文件 - 刮削阶段:根据文件名或文件内容,从网上自动抓取电影的信息(比如标题、海报、简介等,这些信息统称"元数据")
- 整理阶段:根据抓到的信息,把电影文件改个规范的名字,按一定目录结构放到
/data/media - 更新阶段:整理好后,Jellyfin 这类媒体服务器就能识别和使用了
5. 数据流向
6. 媒体整理流程示意图
7. 详细目录结构
宿主机目录结构
/data/
├── download/ # 没整理过的电影文件
│ ├── movie1.mp4 # 电影文件
│ └── ...
└── media/ # 已整理好的电影文件
├── Movies/ # 电影目录
│ ├── Movie 1 (2023)/
│ │ ├── Movie 1 (2023).mp4
│ │ └── poster.jpg
│ └── ...
└── ...
AMMDS 容器目录结构
/ammds/
├── data/ # 映射自宿主机的 /data
│ ├── config.json # 配置文件
│ └── ...
├── db/ # 映射自宿主机的 /data/db
│ ├── ammds.db # 数据库文件
│ └── ...
├── download/ # 映射自宿主机的 /data/download
│ ├── movie1.mp4
│ └── ...
/media/ # 映射自宿主机的 /data/media
├── Movies/
└── ...
Jellyfin 容器目录结构
/data/
└── media/ # 映射自宿主机的 /data/media
├── Movies/
└── ...
三、完整挂载关系示意图
四、常见问题解答
1. 挂载失败怎么办?
- 检查路径对不对:确认宿主机上的那个文件夹存在,路径写对了
- 检查权限够不够:确认宿主机上的文件夹有读写权限
- 检查 Docker 有没有在跑:确认 Docker 服务正常运行
- 检查挂载语法对不对:确认
docker-compose.yml里的挂载写法正确,格式是- 宿主机路径:容器路径
2. 电影整理完后在 Jellyfin 里看不到怎么办?
- 检查挂载对不对:确认 Jellyfin 容器正确挂载了
/data/media - 检查媒体库配置:确认 Jellyfin 里加了正确的媒体库路径
- 手动扫一下媒体库:在 Jellyfin 里手动扫描,刷新内容
- 检查文件权限:确认电影文件有可读权限
3. 整理后的电影文件大小变了怎么办?
- 看看是不是开了压缩:AMMDS 默认不会压缩电影文件,检查是不是有其他工具在压缩
- 检查文件格式:确认整理过程中文件格式没变
- 元数据文件也会占地方:整理时会额外生成信息文件(比如 nfo 文件、海报图等),总大小会变大一些
4. 怎么备份挂载的目录?
- 定期备份:定期备份宿主机上的
/data/download和/data/media - 也要备份数据库:同时备份
/data/db,保存 AMMDS 的配置和刮削记录 - 测试备份能否恢复:定期检查备份能不能正常恢复
注意
重要提醒
- 容器运行的时候,别直接去改挂载目录的权限,可能导致容器没法正常访问
- 定期清理没整理的电影文件,免得占太多硬盘空间
- 确保宿主机有足够的硬盘空间,免得整理到一半空间不够了