← 전체 글 보기

~/Library/Caches: 이 블로그 절반의 배경이 되는 폴더 하나

Mac의 ~/Library/Caches 폴더에 무엇이 쌓이는지, 앱별 캐시 용량을 순위로 확인하는 방법과 어디까지 지워도 안전한지 정리했습니다.

· 업데이트 2026년 9월 14일
macOSStorageCacheLibrary

이런 종류의 가이드는 현재 영어로 더 많이 제공됩니다. 전체 글 보기


이 블로그의 글을 두 편 이상 읽었다면 패턴을 눈치챘을 겁니다. DerivedData, 브라우저 캐시, Electron 앱 캐시, CocoaPods, JetBrains 인덱스 — 이들 중 상당수가 하나의 단일 디렉터리 아래 어딘가에 있습니다. 앱별로 따로 보는 대신, 이 디렉터리를 한 번 직접 들여다볼 가치가 있습니다.

open ~/Library/Caches

Finder는 기본적으로 ~/Library를 숨깁니다 — Finder의 이동 메뉴를 클릭하면서 Option을 누르고 있으면 나타나거나, 숨김 폴더 설정을 아예 건너뛰는 위의 open 명령을 쓰면 됩니다.

이 폴더가 존재하는 이유, 그리고 설계상 안전한 이유

~/Library/Caches는 정확히 이런 목적을 위해 Apple이 직접 지정한 위치입니다 — 어떤 앱이든 재생성하거나 다시 내려받을 수 있는 데이터로, 운영체제가 디스크 압박 시 명시적으로 삭제해도 되는 데이터입니다. 개발자들이 만들어낸 관행이 아니라 Apple 파일 시스템 배치의 문서화된 정식 부분이며, 잘 만들어진 모든 Mac 앱은 필수가 아닌 데이터를 여기에 두도록 되어 있습니다.

바로 이 사실 하나가 디스크 다른 어느 곳보다 이 폴더를 폭넓게 비워도 유난히 안전하게 만듭니다. Apple 자신의 설계상, 여기에는 중요한 무언가의 유일한 사본이 있어서는 안 됩니다. 실질적인 예외 — Caches 폴더를 정말로 일회성이 아닌 데이터에 잘못 사용하는 소수의 앱들 — 는 구체적으로 이름을 짚어볼 가치가 있을 만큼 드물며, 이 글 아래에서 다룹니다.

직접 읽고 크기순으로 정렬하기

du -sh ~/Library/Caches/* 2>/dev/null | sort -hr | head -30

1년 넘게 사용한 거의 모든 Mac에서, 이 명령 하나만으로 이 블로그의 다른 가이드에서 다룬 것과 똑같은 이름들이 그대로 드러납니다. com.apple.Safari, Google/Chrome, org.swift.swiftpm, Homebrew, CocoaPods, pip, JetBrains에 더해, 하나하나 확인해 볼 생각도 못했을 작은 앱들의 항목이 수십 개 더 있습니다.

폴더 이름은 거의 항상 역방향 DNS 번들 식별자(com.company.AppName)이거나 일반 패키지 이름(pip, Homebrew)입니다 — 낯선 이름이 보인다면 mdfind "kMDItemCFBundleIdentifier == '<이름>'"으로 어떤 설치된 앱에 속하는지 대개 확인할 수 있습니다.

통째로 안전하게 지우는 방법

대부분의 사람에게, 대부분의 경우 이렇게 해도 정말로 괜찮습니다.

rm -rf ~/Library/Caches/*

잘 만들어진 앱은 모두 다음 실행 시 이 폴더에서 필요한 것을 다시 만들어냅니다 — 그것이 이 디렉터리가 존재하는 이유 그 자체입니다. 눈에 보이는 비용은 이 블로그 다른 곳에서 다룬 개별 비용을 합친 것과 같습니다 — 브라우저는 리소스를 다시 가져오고, 패키지 매니저는 다음 설치 때 다시 내려받고, Xcode의 인덱스는 재구축됩니다. 아무것도 망가지지 않고, 몇 가지가 잠시 느려질 뿐입니다.

이름으로 알아둘 가치가 있는 예외들

소수의 앱은 Caches 하위 폴더를 “캐시”라는 단어가 암시하는 것보다 훨씬 잃으면 손해가 큰 데이터에 사용합니다. 각각의 자세한 내용은 전용 글에서 다룹니다.

  • **Slack의 IndexedDB**에는 아직 보내지 않은 초안 메시지가 들어 있을 수 있습니다 — Slack과 Discord 가이드를 참고하세요.
  • 로컬 우선 저장소로 IndexedDB를 사용하는 모든 앱(일부 PWA, 일부 메모 앱) — 브라우저 캐시 가이드를 참고하세요.
  • Docker의 캐시는 사실 이 폴더 바깥에 있습니다 — ~/Library/Caches가 아니라 ~/Library/Containers 아래 VM 디스크 이미지 안에 있는데, Caches를 통째로 지워도 Docker까지 처리했다는 착각을 하지 않도록 알아둘 가치가 있습니다. Docker 디스크 공간 가이드를 참고하세요.

이 블로그에서 다룬 나머지 모든 것 — DerivedData는 사실 ~/Library/Caches가 아니라 ~/Library/Developer 아래에 있는데, 이 역시 이 폴더의 사정권 바로 바깥에 있다는 것을 알아둘 가치가 있습니다 — 은 ~/Library/Caches 안에 직접 있거나, Apple이 조금 다른 최상위 디렉터리에 분류해 놓았더라도 같은 “재생성해도 안전함” 원칙의 적용을 받습니다.

통째로 지우는 것보다 스캔이 나은 이유

rm -rf ~/Library/Caches/*는 안전하지만, 동시에 눈이 먼 방법이기도 합니다 — 45GB 중 40GB를 차지하는 세 개의 앱이 무엇인지 알려주지 못하고, 위에서 말한 Slack IndexedDB 예외가 일어나기 전에 경고해주지도 못합니다. 바이트 단위로 나뉘고, 정렬되고, 이름이 붙은 분석은 “캐시 폴더를 지우고 잘되길 바라기”를 “실제로 알아둘 가치가 있는 네 가지를, 순서대로”로 바꿔줍니다.

DevCruft는 바로 이 폴더를 읽고 — 여기에 더해 DerivedData, Docker의 컨테이너 저장 공간, 그 바로 바깥에 있는 나머지 모든 것까지 — 위의 du 명령이 만들어내는 것과 같은 순위별 분석을, 직접 찾아봐야 하는 번들 식별자가 아니라 각 항목이 실제로 무엇이고 안전한지 여부까지 이름을 붙여 보여주도록 설계하고 있는 개발자용 무료 Mac 앱입니다. 현재 개발 중이니, 출시 소식을 받고 싶다면 대기자 명단에 등록해 주세요.

이번 라운드에서 추가된 열 편의 가이드 중 마지막 글입니다. 개발자의 Mac을 채우는 모든 것을 더 넓게 훑어보는 원조 글은 전체 개발자 저장 공간 가이드에서 시작하세요.

이 작업을 위한 무료 앱을 만들고 있습니다.

이런 가이드에 나오는 모든 캐시를 찾아내고 각각이 차지하는 용량을 보여주는 DevCruft를 만들고 있습니다. 출시 소식을 받으려면 대기자 명단에 등록하세요.

출시 때 이메일 한 통 외에는 아무것도 보내지 않습니다. 언제든 명단에서 삭제해 달라고 요청하실 수 있습니다. 개인정보 처리방침