FAQ: macOS(Finder) 태그 메커니즘과 본 앱의 구현 설명
1. macOS의 태그(Finder Tags)란 무엇이며, 어디에 저장되나요?
Finder 태그는 파일의 메타데이터로, 파일 내용 자체에는 기록되지 않고 파일의 확장 속성(xattr)에 저장됩니다. 주요 키 이름은 다음과 같습니다:
com.apple.metadata:_kMDItemUserTags
이 내용은 바이너리 plist 형식으로, 기본적으로 “태그 배열”입니다. 각 태그 요소에는 태그 이름과 색상 번호가 포함되어 있으며, 색상 번호의 범위는 0–7입니다(0: 무색, 1: 회색, 2: 녹색, 3: 보라색, 4: 파란색, 5: 노란색, 6: 빨간색, 7: 주황색).
따라서:
- “파일에 태그를 붙인다”는 것은 본질적으로 “태그 메타데이터를 xattr에 기록하는 것”입니다.
- 이와 스팟라이트 검색 가능 여부는 별개의 문제입니다.
2. 구형 확장 속성 com.apple.FinderInfo에 대하여
com.apple.FinderInfo는 이전 버전의 macOS/Finder에서 사용하던 메커니즘 중 하나입니다:
- 구형 메커니즘: 이는 단지 한 가지 색상만을 표현할 수 있으며, 태그 이름은 포함하지 않습니다.
- 새로운 시스템에서도 기록될 수 있음: 현재는 주로
_kMDItemUserTags가 사용되고 있지만, Finder는 여전히com.apple.FinderInfo도 함께 기록/업데이트할 수 있습니다(기존 시스템과의 호환성을 위해).
보다 자세히 설명하자면:
- 파일의 특정 태그 이름이 Finder의 사용자 정의 태그 목록에 존재하는 경우에만 Finder는
com.apple.FinderInfo의 색상 정보를 기록/업데이트할 수 있습니다. - 여러 색상의 태그가 존재할 경우, “유효한 목록에서 마지막으로 지정된 색상”이 적용됩니다.
3. 다국어 문제: 왜 같은 색상이 다른 언어 환경에서는 “다른 태그”로 표시될까요?
macOS는 현지화된 태그 이름 문자열을 기록합니다:
- 영문 시스템에서는
Red - 중문 시스템에서는
红色
이는 시스템 입장에서는 서로 다른 두 개의 태그로 인식됩니다. 본 앱은 시스템 API를 통해 기본 색상 태그 이름을 가져오므로, 결과는 시스템 언어 환경에 따라 달라집니다(“시스템 설정 → 일반 → 언어 및 지역 / 사용 언어”에서 “자동”을 선택하면 현재 시스템 언어를 따릅니다). 만약 시스템 언어와 앱 언어가 일치하지 않으면, 태그 이름이 서로 다르게 표시될 수 있습니다.
4. 왜 앱 설정에서 Finder의 태그 구성과 일치해야 할까요?
- macOS의 제약 상, 앱은 일반적으로 Finder의 “사용자 정의 태그 이름↔색상” 구성 목록을 완전히 읽어올 수 없습니다.
- 태그를 읽을 때, 시스템 API는 종종 색상을 직접 제공하지 않고 “태그 이름”만 전달합니다. 만약 앱에서 해당 이름에 맞는 색상을 미리 설정해두지 않으면, 색상이 올바르게 표시되지 않을 수 있습니다.
- 태그를 쓸 때도 마찬가지로, 시스템 API는 대부분 “태그 이름”만 전달하며, 최종 색상은 Finder가 그 이름에 대해 어떻게 정의했는지에 따라 결정됩니다.
5. 태그 메타데이터는 다양한 디스크/네트워크 위치에서 어떻게 저장되나요? (APFS / AppleDouble / NTFS ADS)
5.1 APFS(내장 디스크) — 원시 xattr 저장(가장 신뢰성 높음)
APFS는 확장 속성을 기본 지원하므로, 태그 메타데이터는 파일의 xattr에 직접 저장됩니다.
5.2 xattr을 지원하지 않거나 불완전하게 지원하는 위치 — AppleDouble(._원본파일명)
대상 파일 시스템이나 프로토콜이 xattr을 안정적으로 저장할 수 없는 경우(FAT32, exFAT, 네트워크 드라이브: SMB/WebDAV/NFS 등), macOS는 메타데이터를 AppleDouble 동반 파일에 저장합니다:
._원본파일명(예:photo.jpg의 경우._photo.jpg)
보기 여부:
- Finder에서는 절대로 표시되지 않습니다(숨김 파일 표시를 활성화해도 볼 수 없음).
- 터미널
ls -la에서는 확인 가능합니다. - Windows에서 숨김 파일 표시를 활성화하면 볼 수 있습니다(따라서 많은
._작은 파일들이 보입니다).
중요한 팁(태그가 “사라지는” 일반적인 원인):
- Windows 또는 일부 도구에서 파일을 이동/복사할 때 원본 파일만 이동하고
._파일을 남겨둔다면, 새 위치에 가면 태그가 “사라진 것처럼” 보일 수 있습니다. - 이후에 해당하는
._파일까지 함께 이동시키면, 대부분의 경우 태그가 복구됩니다.
5.3 SMB 연결 NTFS: ADS(선택적 데이터 스트림) 사용 가능성
SMB를 통해 NTFS에 접근할 때 서버/프로토콜 설정 조건이 충족되면, macOS는 ._ 파일을 생성하지 않고 NTFS의 ADS(Alternate Data Streams, 선택적 데이터 스트림)에 메타데이터를 기록할 수 있습니다:
- ADS는 NTFS의 특징으로, 한 파일에는 “주 데이터” 외에도 추가로 “눈에 보이지 않는 부가 데이터 스트림”을 첨부하여 추가 메타데이터를 저장할 수 있습니다.
- 장점: NTFS 내부에서 이동/복사할 경우, 이러한 메타데이터가 함께 유지되는 경우가 많으며, Windows 사용자에게도 비교적 “깔끔”합니다(
._파일이 생성되지 않음).
단, 다음 사항에 유의해야 합니다:
- 파일을 NTFS에서 FAT32 또는 exFAT로 이동/복사할 경우, 대상 파일 시스템은 ADS/xattr과 같은 메타데이터를 지원하지 않으므로, Windows에서는 다음과 같은 알림이 표시될 가능성이 높습니다:
“파일 속성을 복사하지 않고 정말 복사하시겠습니까?” 이는 부가 메타데이터가 삭제됨을 의미하며, 복사 후에는 태그가 유지되지 않을 수 있습니다.
6. 파일의 태그 xattr을 어떻게 확인할 수 있을까요?
명령줄 xattr은 불편함: 이 명령어는 com.apple.metadata:_kMDItemUserTags와 같은 바이너리 plist 속성을 처리하거나 표시하는 기능을 지원하지 않으며, -px 옵션을 사용해 16진수 형태로 출력해야만 제대로 확인할 수 있습니다.
따라서 타사 도구를 사용하는 것이 좋습니다:
- xattred:
_kMDItemUserTags,com.apple.FinderInfo등의 xattr을 직관적으로 확인하고 검증할 수 있습니다.
7. 스팟라이트와 태그의 관계는 무엇인가요? 태그는 스팟라이트에 의존하나요?
- 태그 자체는 스팟라이트에 의존하지 않습니다: 태그는 사용자가 붙인 즉시 파일의 xattr에 기록되며, 인덱싱 여부는 태그의 “존재 여부”에 영향을 미치지 않습니다.
- 스팟라이트는 단순한 인덱싱 엔진일 뿐입니다: 태그 이름 등의 메타데이터를 인덱스로 만들어 시스템 차원의 검색을 가능하게 합니다.
- macOS는 일반적으로 파일 이동/이름 변경 등의 작업 후 자동으로 인덱스를 유지합니다; 그러나 외장 디스크, 네트워크 디스크, 그리고 “검색 개인 정보”에 추가된 디렉터리는 스팟라이트에 의해 인덱싱되지 않을 수 있습니다.
8. 본 앱의 “강화된 인덱스”는 어떤 역할을 하나요?
스팟라이트가 적용되지 않는 경우(외장 디스크/네트워크 디스크/개인 정보 제외 디렉터리 등), 본 앱은 강화된 인덱스를 제공합니다:
- 사용자가 앱 내에서 폴더를 탐색할 때, 앱은 해당 폴더 내 파일의 태그 정보를 기록합니다.
- 사용자가 디렉터리 트리에서 특정 태그에 해당하는 모든 파일을 조회할 경우, 앱은 스팟라이트 검색 결과에 더해 강화된 인덱스로 매칭된 파일들을 추가로 표시합니다.
- 폴더 위에서 마우스 오른쪽 버튼을 클릭한 뒤 “스캔 및 업데이트”를 선택하면, 해당 폴더 내 파일의 태그 인덱스를 새로 고칠 수 있습니다.