각 작업에 하나의 스케줄러, 하나의 기록 주체, 하나의 감시 경로, 하나의 완료 신호만 지정하여 Jellyfin 작업과 가져오기가 중복되지 않도록 하세요.
재시작, 컨테이너 재생성 또는 새로운 자동화 이후 스캔, 가져오기 또는 메타데이터 작업이 중복되나요? 무엇이든 비활성화하기 전에 작업 이름, 시작 시간, 컨테이너 ID, 스케줄러, 감시 디렉터리 및 출력을 기록하세요. 안전한 해결 방법은 중복 항목을 숨기는 것이 아니라 겹치는 소유권을 제거하는 것입니다.
동일한 작업을 시작할 수 있는 모든 스케줄러 찾기
Jellyfin 예약 작업, 컨테이너 재시작 훅, 호스트 cron 또는 systemd 타이머, 다운로드 관리자의 후처리, API를 호출하는 모든 사이드카를 확인하세요. 두 실행의 타임스탬프와 프로세스 ID를 비교하세요. 두 작업이 동일한 이벤트에서 시작된다면 보조 트리거를 비활성화하고 기본 작업은 변경하지 마세요.
Jellyfin 작업은 주기적으로 또는 수동으로 실행할 수 있으며, 시작 작업은 네트워크 공유가 준비되기 전에 실행될 수 있습니다(작업 실행 시점 참고). 두 번째 가져오기로 보완하려 하지 말고 마운트 준비 상태를 필수 조건으로 처리하세요.
중복이 시작 후, 웹훅 또는 수동 재시도 이후에 나타나는지 확인하세요. 트리거를 확인하면 비활성화해야 할 소유 주체를 좁힐 수 있습니다. 모든 예약 작업을 끄는 것은 원인을 숨길 뿐 재발을 막지 못합니다.
각 경로에 하나의 기록 주체와 하나의 안정적인 식별자 지정
라이브러리로 파일을 이동하는 다운로드 도구 또는 가져오기 도구가 하나뿐인지 확인하고, 모든 컨테이너가 동일한 기준 경로를 보도록 설정하세요. 서로 다른 매핑을 사용하는 두 컨테이너는 동일한 파일을 서로 다른 식별자로 가져올 수 있습니다. 삭제하기 전에 중복 파일 한 쌍의 inode, 체크섬, 경로 및 소유권을 비교하세요.
원본 파일의 이름이 변경되거나 형식이 변환되면 Jellyfin은 이를 업데이트가 아닌 새 항목으로 인식할 수 있습니다. 통제된 이동을 완료하고 한 번만 스캔한 다음 자동화를 다시 활성화하기 전에 예상 항목 수를 확인하세요.
디스크에 있는 설정 파일뿐만 아니라 실행 중인 컨테이너의 레이블과 감시 경로를 비교하세요. 새로 배포한 후에도 이전 컨테이너가 오래된 감시 작업을 계속 활성 상태로 유지할 수 있습니다.
재시작과 재시도 상황에서 중복 방지 검증
트리거 하나를 변경한 후 스택을 재시작하고 예약된 시간이 한 번 지나도록 기다리세요. 프로세스 하나, 가져오기 이벤트 하나, 데이터베이스 변경 하나, 최종 파일 하나가 생성되는지 확인하세요. 그런 다음 실패했거나 중단된 실행을 다시 수행하여 재시도가 두 번째 복사본을 시작하지 않는지 검증하세요.
스케줄러와 경로를 각각 하나로 설정했는데도 중복이 계속되거나, 데이터베이스에 충돌하는 식별자가 있거나, 플러그인이 작업을 반복해서 다시 생성한다면 에스컬레이션하세요. 정리와 방지 테스트가 통과할 때까지 원본 미디어와 데이터베이스 백업을 보관하세요.
보조 기록 주체를 제거한 후 정상 가져오기 한 번과 중단된 재시도 한 번을 실행하세요. 예상 결과는 각 원본 항목마다 데이터베이스 이벤트 하나와 최종 파일 하나입니다.
재시작 후 방지 규칙 확인
선택한 스케줄러만 활성화한 상태에서 스택을 재시작하고 예약된 시간이 한 번 지나도록 기다리세요. 소유권 경계를 확인할 수 있도록 프로세스, 경로 및 데이터베이스 이벤트를 기록하세요.
재시도가 두 번째 가져오기를 시작하지 않고 라이브러리에 유효한 항목 하나만 남아 있다면 해당 구성을 유지하세요. 다른 서비스가 필요하다면 자동화를 한 번에 하나씩 다시 활성화하세요.
기록 주체가 하나인데도 중복이 다시 발생하거나, 데이터베이스에 충돌하는 식별자가 있거나, 플러그인이 비활성화한 작업을 다시 생성한다면 에스컬레이션하세요.
지원 및 팁
더 읽어보기

동시에 실행되는 컨테이너에 맞게 Jellyfin 데이터베이스 연결을 최적화하는 방법
데이터베이스 소유자는 한 명으로 시작하고 SQLite의 잠금 동작을 측정하세요. 동시성과 복구 요구 사항이 복잡성을 감수할 만한 경우에만 다른 백엔드를 추가하세요.

데이터베이스 볼륨이 가득 찬 후 Jellyfin을 복구하는 방법
쓰기 작업을 중지하고, 데이터베이스와 WAL 파일을 보존하며, 상태를 무작정 삭제하지 않고 공간을 확보한 다음 무결성과 원래 워크로드를 확인하세요.

Jellyfin은 왜 누락된 파일을 잘못된 소유자로 다시 생성하나요?
잘못된 소유권은 대개 사용자 식별자 불일치나 다른 가져오기 경로에서 발생합니다. 권한을 변경하기 전에 현재 컨테이너 사용자를 확인하세요.

