마운트 관계 상세 설명
이 문서에서는 AMMDS의 마운트 관계를 쉽게 설명합니다. 즉, 각 폴더가 어떻게 연결되고 데이터가 어떻게 흐르는지 알려드립니다.
처음 AMMDS를 사용하는 경우, 이 문서를 먼저 읽고 마운트가 무엇인지 이해하는 것이 좋습니다. 그래야 배포와 사용 중에 데이터를 잃거나 설정을 잘못하는 일이 없습니다.
1. 배포 시 마운트 방식
1. 기본 마운트 설정
Docker Compose로 AMMDS를 배포할 때 docker-compose.yml 파일에 마운트 디렉터리를 설정해야 합니다:
"마운트"란? 호스트(여러분의 컴퓨터/서버)의 폴더를 Docker 컨테이너(독립된 "작은 상자")에 연결하여, 컨테이너가 이 폴더를 읽고 쓸 수 있게 하는 것입니다. USB를 컴퓨터에 꽂으면 컴퓨터가 USB의 파일에 접근할 수 있는 것과 같습니다.
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. 배포 마운트 다이어그램
2. 미디어 정리의 마운트 방식
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/
└── ...
3. 전체 마운트 관계 다이어그램
4. 자주 묻는 질문
1. 마운트 실패 시 어떻게 하나요?
- 경로 확인: 호스트에 해당 폴더가 존재하고 경로가 올바른지 확인
- 권한 확인: 호스트 폴더에 읽기/쓰기 권한이 있는지 확인
- Docker 실행 확인: Docker 서비스가 정상적으로 실행 중인지 확인
- 마운트 문법 확인:
docker-compose.yml의 마운트 작성법이 올바른지 확인, 형식은- 호스트경로:컨테이너경로
2. 영화 정리 후 Jellyfin에서 안 보여요
- 마운트 확인: Jellyfin 컨테이너가
/data/media를 올바르게 마운트했는지 확인 - 미디어 라이브러리 설정 확인: Jellyfin에 올바른 미디어 라이브러리 경로가 추가되었는지 확인
- 수동 스캔: Jellyfin에서 수동으로 스캔하여 새로고침
- 파일 권한 확인: 영화 파일에 읽기 권한이 있는지 확인
3. 정리 후 영화 파일 크기가 변했어요
- 압축 확인: AMMDS는 기본적으로 영화 파일을 압축하지 않음, 다른 도구가 압축하는지 확인
- 파일 형식 확인: 정리 과정에서 파일 형식이 변경되지 않았는지 확인
- 메타데이터 파일: 정리 시 정보 파일(nfo, 포스터 등)이 추가로 생성되어 전체 크기가 증가할 수 있음
4. 마운트된 디렉터리 백업 방법
- 정기 백업: 호스트의
/data/download와/data/media를 정기적으로 백업 - 데이터베이스도 백업:
/data/db도 함께 백업하여 AMMDS 설정 및 스크래핑 기록 보존 - 복구 테스트: 백업이 정상적으로 복원되는지 정기적으로 확인
중요 알림
- 컨테이너 실행 중에는 마운트된 디렉터리의 권한을 직접 변경하지 마세요. 컨테이너가 정상적으로 접근하지 못할 수 있습니다
- 정리되지 않은 영화 파일을 정기적으로 정리하여 너무 많은 디스크 공간을 차지하지 않도록 하세요
- 호스트에 충분한 디스크 공간이 있는지 확인하여 정리 중 공간 부족이 발생하지 않도록 하세요