Synology NAS에서 사진·동영상 중복을 안전하게 제거하는 해시(SHA/xxHash·pHash) + EXIF 기반 워크플로. 스냅샷·외부 백업, 도구(dupeGuru·Czkawka·rmlint·exiftool), 규칙 템플릿, 자동화, 복구 전략까지 단계별 실전 가이드.

해시(SHA/xxHash·pHash)와 EXIF를 함께 쓰면 사진·동영상 중복을 안전하고 재현 가능하게 정리할 수 있습니다. 이 글은 Synology NAS 기준 사전 백업 → 후보 탐지 → 수동 검토 → 실행 → 검증 → 자동화를 단계별로 안내합니다12.
1) 빠른 요약
- 안전 정리 전 스냅샷과 오프사이트 백업(3-2-1) 확보2.
- 정확 바이트 해시(SHA-1/xxHash)로 완전 동일, pHash로 유사 후보 탐지611.
- 재현성 EXIF 촬영시각/기기/해상도 등 규칙으로 “남길 파일”을 일관 결정4.
- 자동화 DSM 작업 스케줄러로 야간 리포트 자동 생성 → 휴먼 승인 후 실행3.
2) 원리: 해시와 EXIF, 언제 어떻게 쓰나
| 기법 | 용도 | 장점 | 주의 |
|---|---|---|---|
| 바이트 해시(SHA-1/xxHash) | 완전 동일 파일 판정 | 오탐 거의 0, 고속(xxHash)6 | 재저장/보정 시 해시 변경 → 유사 판정 불가 |
| 지각 해시(pHash) | 리사이즈·워터마크·톤 보정 등 유사 후보 | 시각적 유사 군집 탐지11 | 임계치 설정·수동 검토 필요 |
| EXIF/메타데이터 | 정렬·우선순위(촬영시각·기기·해상도·렌즈) | 보존/삭제 결정의 근거4 | 편집앱이 수정/삭제 가능 → 보정 필요 |
3) 준비: 스테이징·스냅샷·외부 백업
- 대상 폴더를 /photo-staging 등 임시 영역에 모읍니다.
- 볼륨에서 즉시 스냅샷 생성(작업 전/후) + 스케줄 설정2.
- 오프사이트(두 번째 NAS/클라우드)로 전체 백업 — 3-2-1 원칙2.
Btrfs 스냅샷은 롤백이 쉬워 ‘실수 방지’에 매우 효과적입니다2.
4) 도구 선택(혼합 구성 권장)
| 도구 | 역할 | 강점 | 참고 |
|---|---|---|---|
| exiftool | EXIF 추출/정렬/리네임 | 강력한 메타 파서4 | 촬영일 기준 정렬·충돌 판정 |
| dupeGuru (Picture) | 유사 이미지 후보 수동 검토 | UI·미리보기·임계치 조절5 | 휴먼 검수에 최적 |
| Czkawka | 바이트 해시·pHash 스캔 | xxHash/pHash·멀티스레드6 | 대용량에 유리 |
| rmlint | 실행 스크립트/하드링크 | 삭제/이동/링크 자동화7 | CLI 숙련 필요 |
| MediaInfo/ffprobe | 동영상 메타 비교 | 코덱/해상도/길이 기준9 | 영상 규칙에 활용 |
5) 단계별 워크플로(요약)
- 인덱스: Czkawka로 바이트 해시(sha1/xxh128) 인덱스 생성6.
- 후보: 동일 해시 그룹=확정 중복 / pHash 임계치(예: 90/100) 이상=유사 후보611.
- 규칙: EXIF 촬영시각·해상도·파일크기·경로 가중치로 “남길 파일” 자동 표기4.
- 검토: dupeGuru로 썸네일 확인·예외 표시5.
- 실행: rmlint 스크립트로 삭제/이동/하드링크 통합7.
- 검증: 리포트 총합/샘플 열람 → 문제 없으면 스냅샷 갱신2.
6) 보존/삭제 규칙 템플릿(권장)
| 상황 | 남길 파일 | 삭제/이동 | 메모 |
|---|---|---|---|
| 동일 파일(해시 동일) | 해상도↑·용량↑·경로 우선(/originals) | 나머지 | 완전 중복 → 안전 삭제6 |
| 유사 이미지(pHash ≥ 90) | EXIF 최신·해상도↑ | 낮은 해상도/워터마크본 | 휴먼 검토 후 실행11 |
| Live Photo(HEIC+MOV) | 쌍 모두 보존 | 쌍이 깨진 고아 파일은 격리 | 쌍 매칭 후 정리1 |
| RAW+JPEG | RAW 보존(편집본 동반 보존 가능) | 낮은 해상도 JPEG | 워크플로 목적에 맞춤4 |
| 버스트/연사 | 대표 1~2장 | 나머지 격리 후 검토 | 태깅 후 삭제 결정 |
7) 실행: 리포트 → 안전 실행(개념)
NAS는 Btrfs 권장(스냅샷/링크 친화)27.
- Czkawka: 동일 해시·pHash 그룹 CSV/JSON 리포트 출력6
- rmlint: 스캔 → sh 스크립트 생성(삭제/이동/하드링크)7
- exiftool: EXIF 불량(0000-00-00) 보정/리네임4
- MediaInfo: 동영상 해상도/길이 기준 필터링9
8) 특수 케이스(실수 방지)
- Live Photo: HEIC+MOV 쌍 유지(둘 중 하나만 삭제 금지)1.
- 편집본 vs 원본: 편집본 존재 시 원본과 함께 보존(비파괴 워크플로).
- 썸네일/캐시: 앱 캐시(thumbs, .DS_Store 등)는 확실히 제외 규칙 적용.
- 타임존/서머타임: 촬영시각 어긋남은 exiftool로 일괄 오프셋 보정4.
9) 자동화(주간 리포트 & 승인형 실행)
- DSM 작업 스케줄러 → 사용자 정의 스크립트 → 주 1회 야간 리포트 생성3.
- 메일/푸시로 리포트 공유 → 휴먼 승인 후 실행 스크립트 적용.
- 월 1회 스냅샷 롤링 및 증분 백업 검증2.
10) 복구 전략(되돌리기·감사)
| 상황 | 대응 | 근거 |
|---|---|---|
| 오삭제 | 스냅샷에서 해당 시점 폴더만 복원 | Snapshot Replication2 |
| 링크 통합 문제 | 사전 스냅샷 복구 또는 링크 해제 후 재배치 | rmlint 실행 로그로 추적7 |
| 감사/재현 | 리포트·스크립트·스냅샷 ID 보관 | 재현성/추적성 확보 |
11) 관련 글
12) 결론
중복 정리의 핵심은 해시로 확정, pHash로 후보, EXIF 규칙으로 결정, 그리고 스냅샷·로그로 안전을 지키는 것입니다. 이 워크플로를 주간 리포트 → 휴먼 승인 → 실행의 2단계 자동화로 굴리면 품질·속도·안전을 동시에 달성할 수 있습니다2346711.