Mac의 ~/Library/Group Containers란? 지워도 되는 폴더 구별법
한동안 써 온 Mac에서 ~/Library/Group Containers를 열면 UBF8T346G9.Office, group.com.apple.notes, 9K33E3U3T4.net.shinyfrog.bear 같은 이름의 폴더가 줄줄이 보입니다. 몇 KB짜리 설정만 들어 있는 폴더도 있고, 앱의 데이터베이스 전체가 들어 있는 폴더도 있으며, 오래전에 지운 앱의 폴더도 몇 개 섞여 있습니다. 이름이 무의미한 문자열처럼 보이다 보니 공간이 부족한 사람들이 이 폴더를 비워 버리곤 하고, 그러다 일이 잘못되곤 합니다.
이 글에서는 이 폴더가 무엇인지, 폴더 이름을 어떻게 읽는지, 설치된 앱 중 어느 것이 아직 그룹을 쓰는지 확인하는 방법, 그리고 제거한 앱이 남긴 그룹 중 휴지통으로 옮겨도 되는 것은 무엇인지를 다룹니다.
이 폴더의 정체
App Group은 개발자가 앱의 코드 서명 안에 com.apple.security.application-groups 엔타이틀먼트로 선언하는 공유 공간입니다. Apple의 App Groups 엔타이틀먼트 문서는 이를 한 개발 팀의 여러 앱이 컨테이너와 키체인 접근 그룹을 공유하고 서로 통신하는 방법으로 설명합니다. Mac에서는 그룹마다 ~/Library/Group Containers/<group id>에 폴더가 하나씩 생기고, 처음 사용될 때 시스템이 그 안에 Library/Application Support, Library/Caches, Library/Preferences를 만듭니다.
Apple이 제시하는 식별자 형식은 두 가지입니다.
group.<group name>: Apple Developer 웹사이트에 등록하며, iOS와 같은 형식입니다.<team identifier>.<group name>: 개발자의 10자리 Team ID로 시작하는 macOS 형식이며, 등록이 필요 없습니다.
폴더 이름이 곧 식별자이므로, 폴더 목록만 봐도 각 그룹이 어떤 형식인지 알 수 있습니다.
앱보다 그룹이 오래 남는 이유
그룹의 구성원이 앱 하나뿐인 경우는 드뭅니다. 본체 앱, 위젯, 공유 확장 프로그램이나 Finder 확장 프로그램, 헬퍼 도구가 같은 설정과 파일을 읽으려고 한 그룹에 함께 들어가는 경우가 많습니다. 개발자가 별개의 앱 여러 개를 한 그룹에 넣을 수도 있습니다. Microsoft Office 앱들은 UBF8T346G9.ms, UBF8T346G9.Office, UBF8T346G9.OfficeOsfWebHost를 공유하고, Pages, Numbers, Keynote는 group.com.apple.iWork를 공유합니다.
macOS와 iOS가 갈리는 지점은 제거입니다. Apple의 containerURL(forSecurityApplicationGroupIdentifier:) 문서에 따르면, iOS에서는 그룹의 앱이 모두 사라지면 시스템이 그룹 디렉터리를 지우지만, macOS에서는 앱이 처음 필요로 할 때 디렉터리를 만들고 절대 지우지 않습니다. 앱을 휴지통으로 끌어다 놓아도 그 앱의 그룹은 원래 자리에 그대로 남습니다.
안에 든 것은 경우에 따라 크게 다릅니다. 작은 환경설정 파일일 수도, 캐시일 수도, 진짜 데이터일 수도 있습니다. Microsoft는 Office의 공유 폴더 세 개를 휴지통으로 옮기면 Outlook 데이터가 지워진다고 경고하며, WhatsApp은 받은 미디어를 group.net.whatsapp.WhatsApp.shared와 group.net.whatsapp.WhatsApp.private에 보관하는데 그 크기가 수십에서 수백 GB에 이를 수 있습니다.
폴더 이름 읽는 법
| 이름 형태 | 예시 | 보통의 의미 |
|---|---|---|
group.<bundle id> |
group.com.apple.testflight |
정확히 앱 하나의 이름을 딴 그룹, 여기서는 TestFlight |
group.<bundle id>.<suffix> |
group.net.whatsapp.WhatsApp.shared |
앱 하나의 전체 ID에 묶인 그룹, 그 앱이나 확장 프로그램이 사용 |
group.<shared name> |
group.com.apple.iWork, group.net.whatsapp.family |
여러 앱이 공유하며, 이름에 특정 앱의 ID가 없음 |
<TeamID>.<bundle id> |
9K33E3U3T4.net.shinyfrog.bear |
앱 하나, Mac 형식, 여기서는 Bear |
<TeamID>.group.<name> |
G78RJ6NLJU.group.at.EternalStorms.Yoink |
팀 범위의 그룹, 앱 하나일 수도 여럿일 수도 있음 |
<TeamID>.<short name> |
UBF8T346G9.Office, UBF8T346G9.ms |
제품군 전체용, 제품이나 개발사 이름을 땀 |
보기보다 어려운 이유가 두 가지 있습니다. Team ID가 가리키는 것은 앱이 아니라 개발자입니다. Mac에 있는 Microsoft 그룹은 Teams 것이든 Office 것이든 모두 UBF8T346G9.로 시작합니다. 그리고 번들 ID처럼 보이는 이름이 항상 현재 앱의 ID인 것도 아닙니다. Teams는 UBF8T346G9.com.microsoft.teams를 유지하지만 앱 자체는 com.microsoft.teams2입니다. 이름은 단서일 뿐이고, 증거는 설치된 앱의 서명입니다.
크기순으로 정렬해 지우면 탈이 나는 이유
이 폴더에서 가장 큰 폴더는 보통 지금 쓰이고 있는 것입니다. 크기순으로 정렬하면 메일 저장소, 메모 데이터베이스, 채팅 앱의 미디어가 맨 위에 오는데, 그중 어느 것도 캐시가 아닙니다.
Apple의 기본 앱도 여기에 있습니다. group.com.apple.notes와 group.com.apple.reminders는 메모와 미리 알림의 것이고, group.com.apple.iWork는 Pages, Numbers, Keynote의 것이며, systemgroup.으로 시작하는 이름은 시스템 그룹입니다. 이름이 낯설더라도 이 중 어느 것도 잔여물이 아닙니다.
공유 그룹은 구성원 하나가 사라져도 계속 남습니다. Excel이나 Outlook이 아직 설치되어 있다면 Word를 제거했다고 UBF8T346G9.Office를 지워도 되는 것이 아니며, 지우면 남은 앱들이 초기화되거나 망가집니다.
그룹을 한번 지우면 내용을 되살릴 방법이 없습니다. 그 그룹이 아직 필요한 앱은 다음에 요청할 때 비어 있는 새 폴더를 받지만, 사본을 따로 두지 않았다면 안에 있던 것은 사라집니다.
그룹의 소유자 확인하기
먼저 읽기 전용으로 무엇이 있고 크기가 얼마인지 살펴봅니다.
ls ~/Library/Group\ Containers
du -sh ~/Library/Group\ Containers/* 2>/dev/null | sort -h | tail -15
첫 줄은 모든 그룹을 나열합니다. 두 번째 줄은 가장 큰 15개를 보여 주며, 가장 큰 것이 마지막에 나옵니다. macOS가 터미널이 다른 앱의 데이터에 접근해도 되는지 물을 수 있습니다. 거부했거나, 어떤 폴더에서 권한 오류가 나거나 크기가 나오지 않았다면 그 폴더는 측정되지 않은 것이지 비어 있는 것이 아닙니다.
그다음 설치된 앱에 어느 개발자가 서명했는지, 그 앱이 어떤 그룹을 선언하는지 확인합니다.
codesign -dv "/Applications/Microsoft Teams.app" 2>&1 | grep TeamIdentifier
codesign -d --entitlements - "/Applications/Microsoft Teams.app" 2>/dev/null
TeamIdentifier 줄은 의심 가는 그룹의 접두사와 일치해야 합니다. 두 번째 명령은 앱의 엔타이틀먼트를 출력하며, 앱이 속한 그룹은 com.apple.security.application-groups 아래에 나열됩니다.
특정 그룹을 아직 선언하고 있는 설치된 앱을 모두 찾으려면 앱 서명을 검색합니다.
find /Applications ~/Applications -maxdepth 3 -name "*.app" -prune 2>/dev/null |
while read -r app; do
codesign -d --entitlements - "$app" 2>/dev/null | grep -qF "UBF8T346G9.Office" && echo "$app"
done
출력되는 줄 하나하나가 자기 서명으로 그 그룹을 주장하는 앱이며, 그 그룹은 남겨 둡니다. 결과가 비어 있으면 강력한 단서이긴 하지만 증거는 아닙니다. 이 반복문은 각 앱의 바깥쪽 서명만 읽는데, 앱 안의 위젯, 확장 프로그램, 헬퍼는 각자 따로 서명되어 있고, 두 폴더 바깥에 설치된 앱은 살펴보지 않기 때문입니다.
지워도 되는 그룹
다음 조건을 모두 만족하면 그 그룹은 지워도 되는 잔여물입니다.
- 이름에 제거한 앱의 전체 ID가 들어 있거나, 설치된 앱 중 어느 것도 서명에 쓰지 않는 Team ID가 들어 있습니다.
/Applications바깥의 앱까지 포함해 위 방법으로 확인했을 때 그 그룹을 선언하는 설치된 앱이 없습니다.- Apple 그룹이 아닙니다.
group.com.apple.이나systemgroup.으로 시작하는 것은 제외하되, TestFlight처럼 따로 내려받았다가 제거한 Apple 앱의 정확한 그룹은 예외입니다. - 안을 열어 보았고, 들어 있는 것이 필요 없습니다. 채팅 앱의 미디어나 Outlook 저장소는 앱이 사라진 뒤에도 여전히 사용자 본인의 것입니다.
그런 다음 그 개발자의 앱을 모두 종료하고, Finder에서 이동 › 폴더로 이동으로 폴더를 찾아 휴지통으로 옮긴 뒤, 휴지통을 비우기 전에 한동안 그대로 두세요. 나중에 앱을 다시 설치하면 새 그룹으로 시작합니다. ~/Library의 나머지는 앱 제거 후 남은 파일 지우기에서 다루고, 지워도 될 것처럼 보이지만 그렇지 않은 다른 위치는 Mac 클리너가 절대 지우면 안 되는 것에 정리해 두었습니다.
Mole은 이렇게 처리합니다
Mole은 앱을 제거할 때만 그룹 컨테이너를 지웁니다. 그 앱의 번들 ID를 이름으로 쓰는 그룹, 그 앱의 Team ID가 붙은 그룹, 그리고 앱과 그 안의 확장 프로그램, 로그인 항목, XPC 서비스, 헬퍼의 서명에 선언된 그룹을 찾습니다. 앱 이름과 정확히 같은 group.<bundle id> 폴더는 기본으로 선택됩니다. <TeamID>.<bundle id> 폴더, 앱 ID로 시작하기만 하는 그룹, 앱이 선언한 공유 그룹은 체크 없이 목록에 나오며, 더 길고 구체적인 ID를 가진 아직 설치된 앱이 소유한 그룹은 아예 목록에 나오지 않습니다.
각 그룹을 옮기기 직전에 Mole은 한 번 더 확인합니다. 같은 개발자의 설치된 앱과 활성 시스템 확장 프로그램을 다시 읽고, 그중 하나라도 그 그룹을 선언하거나, 검토했던 앱이 바뀌었거나 다시 설치되었거나, 그 목록을 제시간에 읽지 못하면 그 그룹을 옮기지 않습니다. 한 줄에서 얻은 허락을 다음 줄에 재사용하는 일은 없습니다. Apple의 group.com.apple. 그룹은 TestFlight처럼 따로 배포되는 Apple 앱의 정확한 그룹을 빼고는 계속 보호되므로, Pages를 제거해도 group.com.apple.iWork는 Numbers와 Keynote를 위해 남습니다. 테스트 Mac에서 Microsoft Teams를 제거했을 때는 UBF8T346G9.com.microsoft.teams, UBF8T346G9.com.microsoft.oneauth, UBF8T346G9.com.microsoft.entrabroker 세 그룹이 남았고, Mole은 추측하는 대신 이것들을 보호 항목으로 보고했습니다. Office의 UBF8T346G9.Office와 그 형제 그룹은 일부러 건드리지 않습니다.
앱 제거로 지우는 것은 모두 휴지통으로 갑니다. 앱 제거가 아닐 때 Group Containers는 Mole의 보호 대상 사용자 데이터 위치 목록에 들어 있습니다. 정리의 「삭제된 앱의 잔여 데이터」 섹션은 group. 그룹이나 공유 그룹을 절대 제안하지 않습니다. 이 섹션에 나올 수 있는 그룹 컨테이너는 설치된 어떤 소프트웨어도 그 ID를 주장하지 않는 앱별 <TeamID>.<bundle id> 폴더뿐이며, 그 확인을 끝내지 못하면 하나도 표시하지 않습니다. 정리 전반에 대해서는 Mac에서 지워도 안전한 캐시와 Office 제거 가이드를 참고하세요.
자주 묻는 질문
Group Containers 폴더 전체를 지워도 되나요?
안 됩니다. 이 폴더에는 메모, 미리 알림, iWork, 그리고 사용 중인 메일 앱과 채팅 앱 등 아직 설치된 앱의 데이터가 들어 있습니다. 그룹은 설치된 앱 중 어느 것도 선언하지 않는다는 것을 확인한 뒤에 하나씩만 지우세요.
앱을 제거했는데 왜 그룹이 아직 남아 있나요?
macOS에서는 앱이 처음 필요로 할 때 시스템이 그룹 폴더를 만들고 절대 지우지 않으며, 같은 그룹을 그 개발자의 다른 앱이나 확장 프로그램이 아직 쓰고 있을 수도 있습니다. 앱을 휴지통으로 끌어다 놓는 것으로는 그룹을 건드리지 않습니다.
설치된 앱이 아직 쓰는 그룹을 지우면 어떻게 되나요?
앱은 설정, 로그인 상태, 로컬 데이터 등 안에 있던 것을 잃고, 다음에 요청할 때 빈 폴더를 받습니다. 그룹을 바로 삭제하지 말고 휴지통으로 옮기세요. 그래야 앱이 제대로 동작하지 않을 때 되돌려 놓을 수 있습니다.