AskClean

Xcode DerivedData와 개발자 캐시 안전하게 삭제하기

AskClean 팀 · 업데이트 2026-11-02

DerivedData는 빌드 산출물과 인덱스를 담는 Xcode의 작업용 폴더로, 어느새 수십 GB까지 커질 수 있습니다. 삭제해도 안전합니다. Xcode를 종료하고 ~/Library/Developer/Xcode/DerivedData의 내용을 지우면 다음 빌드 때 Xcode가 모두 다시 만듭니다. 이 가이드는 그 방법과 함께 시뮬레이터, 아카이브, 패키지 캐시까지 다룹니다.

Xcode DerivedData와 개발자 캐시 안전하게 삭제하기
Mac에서 Xcode DerivedData를 안전하게 삭제하는 방법과 함께, 오래된 시뮬레이터 런타임과 아카이브, 기기 지원 파일, 패키지 관리자 캐시까지 무엇을 지우고 무엇을 남길지 정리합니다.

DerivedData는 무엇이고 왜 이렇게 커지나요?

DerivedData는 Xcode가 소스 코드에서 만들어 낸 모든 것을 보관하는 곳입니다. 중간 빌드 오브젝트, 컴파일된 산출물, 모듈 캐시, 코드 완성과 정의로 이동에 쓰이는 심볼 인덱스, 빌드 로그가 들어 있습니다. 기본 위치는 ~/Library/Developer/Xcode/DerivedData이며, 그동안 열어 본 프로젝트나 워크스페이스마다 하위 폴더가 하나씩 생깁니다.

커지는 데는 구조적인 이유가 있습니다. Xcode는 여는 프로젝트마다 DerivedData 폴더를 만들고(한 번 빌드한 뒤 다시 열지 않은 일회성 클론도 포함됩니다), 이 폴더들을 스스로 정리하지 않습니다. 각 폴더에는 구성과 대상(Debug와 Release, 시뮬레이터와 실기기)별 빌드 산출물이 따로 쌓이므로, 얼마나 확보될지 짐작하기보다 프로젝트 하위 폴더의 크기를 직접 측정하세요.

안에 든 것은 정의상 모두 다시 만들 수 있습니다. ‘derived(파생됨)’라는 이름 그대로입니다. DerivedData를 지워도 소스 코드, 프로젝트 설정, 버전 관리 중인 파일은 전혀 영향을 받지 않습니다. 대가는 시간뿐입니다. 각 프로젝트의 다음 빌드는 처음부터 하는 클린 빌드가 되고, 백그라운드에서 몇 분간 인덱싱이 다시 진행됩니다.

DerivedData 삭제하기

Xcode의 Clean Build Folder 명령(Product > Clean Build Folder, 또는 Shift-Command-K)은 현재 열린 프로젝트의 빌드 산출물만 지웁니다. 이상한 빌드 오류를 고칠 때는 유용하지만 디스크 공간에는 거의 차이가 없습니다. 실제로 공간을 확보하려면 DerivedData 폴더 자체를 삭제해야 합니다. Xcode의 Locations 설정에서 폴더를 열거나, Finder에서 직접 찾아가거나, 터미널에서 지우는 세 가지 방법이 있으며 결과는 모두 같습니다.

프로젝트별로 지우는 것이 정밀한 방법입니다. 매일 빌드하는 두세 개 프로젝트의 DerivedData는 남기고 나머지 폴더만 지우세요. 통째로 지우는 것은 빠른 방법이고 그래도 괜찮습니다. 다만 모든 프로젝트가 한꺼번에 전체 재빌드 비용을 치르게 됩니다.

  1. 먼저 Xcode를 종료하세요. Xcode가 실행 중일 때 DerivedData를 지우면 인덱서가 꼬일 수 있고, Xcode가 열어 둔 파일은 깔끔하게 지워지지 않을 수 있습니다.
  2. 폴더 위치를 찾으세요. Xcode에서 Settings > Locations를 열고 DerivedData 경로 옆의 작은 화살표를 클릭하면 Finder에서 열립니다. 또는 Finder에서 Command-Shift-G를 누르고 ~/Library/Developer/Xcode/DerivedData를 직접 입력하세요.
  3. 프로젝트 하위 폴더를 크기순으로 정렬해 지울 것을 선택하고(전부 지우려면 Command-A) 휴지통으로 옮기세요. 휴지통을 먼저 거치는 것이 더 안전한 습관입니다. 마음이 바뀌면 바로 복원할 수 있기 때문입니다.
  4. 터미널을 쓴다면 rm -rf ~/Library/Developer/Xcode/DerivedData 한 줄로 전부 삭제됩니다. 아주 큰 폴더는 Finder보다 빠르지만, 사용하기 전에 아래 안내를 꼭 읽으세요.
  5. Xcode를 다시 열고 빌드하세요. 각 프로젝트의 첫 빌드는 눈에 띄게 오래 걸리고, 활동 표시줄에 ‘Indexing’이 한동안 표시됩니다. 둘 다 한 번만 치르는 비용입니다.

rm -rf는 신중하게 사용하세요. 휴지통을 거치지 않고 영구 삭제하므로 되돌릴 수 없습니다. 경로를 정확히 입력하고, 이 작업에는 절대 sudo를 쓰지 마세요. 터미널이 익숙하지 않다면 Finder를 사용하세요. 같은 작업을 되돌릴 수 있는 방식으로 처리합니다.

오래된 시뮬레이터 런타임 정리하기

시뮬레이터도 개발자 저장 공간을 크게 차지하는 경우가 많습니다. 내려받은 iOS, watchOS, tvOS 런타임은 각각 공간을 차지하고, 시뮬레이터 기기마다 ~/Library/Developer/CoreSimulator/Devices 아래에 데이터를 보관합니다. Xcode를 몇 번 업그레이드했다면 더 이상 테스트하지 않는 OS 버전의 런타임이 남아 있는지 확인하세요.

가장 빠른 방법은 내장 정리 명령입니다. 터미널에서 xcrun simctl delete unavailable을 실행하면 unavailable(사용 불가)로 표시된 시뮬레이터 기기가 모두 삭제되며, 그 안의 앱과 데이터도 함께 사라집니다. 대부분은 제거된 런타임이나 이전 Xcode 버전이 남긴 고아 기기입니다. 특히 Xcode를 여러 버전 설치해 두었다면 먼저 xcrun simctl list devices로 목록을 확인하세요.

런타임 자체는 Xcode의 Settings > Components(Xcode 14~15에서는 Platforms)에서 관리합니다. 설치된 시뮬레이터 런타임이 크기와 함께 표시되니 오래된 것을 선택해 삭제하세요. 이전 OS 버전에서 테스트할 일이 없다면 플랫폼마다 최신 런타임 하나만 남기면 됩니다.

Window > Devices and Simulators에서 시뮬레이터 기기를 하나씩 정리할 수도 있습니다. Simulators 탭에서 전혀 쓰지 않는 기기(예: 오래된 테스트 데이터가 남은 중복 iPhone 모델 여섯 대)를 마우스 오른쪽 버튼으로 클릭하고 Delete를 선택하세요. 각 기기에 저장된 데이터와 앱도 함께 사라집니다.

아카이브, 기기 지원 파일, 캐시

아카이브는 배포용 빌드를 만들 때마다(Product > Archive) ~/Library/Developer/Xcode/Archives에 하나씩 쌓입니다. 아카이브마다 완전한 앱 빌드와 dSYM 디버그 심볼이 들어 있어 흔히 개당 100 MB에서 1 GB에 이릅니다. 지우기 전에 알아 둘 점이 있습니다. 안에 든 dSYM이 있어야 바로 그 빌드의 크래시 보고서를 심볼화(symbolicate)할 수 있습니다. App Store나 TestFlight에서 아직 배포 중인 버전의 아카이브는 남기고(또는 App Store Connect에 dSYM이 있는지 확인하고) 나머지만 지우세요. 가장 안전한 방법은 Xcode Organizer(Window > Organizer > Archives)에서 버전 정보를 보며 검토하고 삭제하는 것입니다.

iOS DeviceSupport(~/Library/Developer/Xcode/iOS DeviceSupport)에는 그동안 연결한 모든 iPhone과 iPad에서 Xcode가 복사해 온 디버깅 심볼이 들어 있습니다. iOS 버전마다 폴더가 하나씩 있고 보통 각각 2~5 GB입니다. 이제 어떤 기기에서도 쓰지 않는 iOS 버전의 폴더는 자리만 차지하므로 지워도 됩니다. 그 버전의 기기를 다시 연결하면 Xcode가 심볼을 다시 복사할 뿐입니다(‘Preparing debugger support’가 한 번 표시됩니다). watchOS와 tvOS 기기용 폴더도 같은 위치에 따로 있습니다.

Xcode 자체 캐시는 ~/Library/Caches/com.apple.dt.Xcode에, 시뮬레이터 캐시는 ~/Library/Developer/CoreSimulator/Caches에 있습니다. 둘 다 필요할 때 다시 만들어지지만, Xcode와 Simulator 앱을 종료한 상태에서만 지우고 CoreSimulator 캐시 중 무엇인지 모르는 파일은 그대로 두세요.

패키지 관리자 캐시 (SwiftPM, CocoaPods, npm, Homebrew)

패키지 관리자는 다음 설치를 빠르게 하려고 내려받은 의존성을 보관합니다. 유용한 기능이지만, 여러 해 동안 많은 프로젝트를 거친 Mac에서는 디스크를 크게 차지하는 항목이 될 수 있습니다. 이런 다운로드 캐시는 다시 만들 수 있지만, 다음 설치 때 패키지를 다시 내려받아야 합니다.

Swift Package Manager는 내려받은 패키지를 ~/Library/Caches/org.swift.swiftpm에 캐시합니다. 각 프로젝트가 해석(resolve)한 체크아웃은 그 프로젝트의 DerivedData 폴더 안에 있으므로 DerivedData를 지우면 함께 지워집니다. 공유 캐시는 Finder에서 지우거나 해당 경로를 rm -rf로 삭제하면 됩니다.

CocoaPods는 내려받은 pod을 ~/Library/Caches/CocoaPods에 보관합니다. 깔끔하게 비우려면 내장 명령인 pod cache clean --all을 사용하세요. 프로젝트의 Pods 폴더는 그대로이고 다운로드 캐시만 사라집니다.

npm 캐시는 ~/.npm에 있으며 JavaScript를 많이 쓰는 Mac에서는 수 GB에 이를 수 있습니다. npm cache clean --force로 비울 수 있습니다. npm이 이 플래그를 요구하는 것은 캐시가 스스로 복구되므로 보통은 비울 필요가 없기 때문입니다. 지워도 안전하며, 다음 설치 때 패키지를 다시 내려받을 뿐입니다. pnpm 사용자는 대신 pnpm store prune을 실행하면 됩니다.

Homebrew는 오래된 다운로드와 이전 버전 패키지를 쌓아 둡니다. brew cleanup은 이전 버전과 오래된 다운로드를 지우고, 패키지 이름 없이 실행하면 더 이상 필요 없는 의존성까지 제거합니다(HOMEBREW_NO_AUTOREMOVE를 설정하지 않은 경우). brew cleanup --prune=all은 다운로드 캐시 전체까지 비웁니다. 무엇이 지워질지 먼저 목록으로 보고 싶다면 brew cleanup -n을 실행하세요.

자동화하기

위의 방법은 모두 통하지만, 개발 과정에서 쌓이는 파일 정리는 끝이 없습니다. DerivedData는 평소처럼 일하면 일주일 안에 다시 쌓이고, 캐시도 다시 차오르며, Xcode를 업데이트할 때마다 쓰지 않는 런타임이 하나씩 남습니다. 여섯 가지 수동 절차를 매달 반복하고 싶지 않다면 이 부분은 자동화할 가치가 있습니다. 단, 아무 설명 없이 한꺼번에 지우는 도구가 아니라 판단 근거를 보여 주는 도구를 쓰세요.

AskClean은 개발자 파일을 별도 분류로 다룹니다. 한 번의 스캔으로 Xcode DerivedData는 프로젝트별로, 오래된 시뮬레이터 런타임은 simctl로 읽어 플랫폼별 최신 버전을 제외하고 보여 주며, 기기 지원 파일과 npm, SwiftPM, cargo, uv 등의 패키지 관리자 캐시도 항목별로 나열합니다. 요즘 공간을 많이 차지하는 로컬 AI 모델도 찾아냅니다. Hugging Face 모델은 모델별로, Ollama 모델 라이브러리는 하나의 항목으로 보여 주며, 모두 기본적으로 선택되지 않은 상태입니다.

모든 항목에는 무엇인지, 다시 만들 수 있는지, 지우면 어떤 대가가 있는지 설명이 붙고, 직접 확인하기 전에는 아무것도 실행되지 않습니다. 확인한 항목은 휴지통으로 옮겨지지 않고 영구 삭제되므로, 확정하기 전에 선택한 항목을 하나씩 검토하세요. 소스 코드와 사진 보관함은 절대 건드리지 않습니다. 이 가이드와 같은 체크리스트를 한 시간의 터미널 작업 없이 처리하는 셈입니다.

다시 만들 수 있는 것과 없는 것

모든 Mac에 해당하는 절감량이 아니라 삭제 경계를 정리한 표입니다. 작업 전후로 직접 측정하세요. Xcode 시뮬레이터 저장 공간 가이드의 읽기 전용 점검 스크립트는 아무것도 바꾸지 않고 이 폴더들의 크기를 보여 줍니다.

분류기본 위치삭제 결과
DerivedData~/Library/Developer/Xcode/DerivedData다시 빌드하고 인덱싱합니다. 소스 코드와 Git 기록은 그대로입니다.
시뮬레이터 기기~/Library/Developer/CoreSimulator/Devices선택한 가상 기기의 앱과 테스트 데이터가 사라집니다. simctl이나 Xcode로 삭제하세요.
Archives~/Library/Developer/Xcode/Archives크래시 심볼화에 필요한 dSYM이 사라질 수 있습니다. 먼저 Organizer에서 검토하세요.
DeviceSupport~/Library/Developer/Xcode/iOS DeviceSupport해당 OS 버전의 기기를 다시 연결하면 디버그 심볼을 다시 복사합니다.

자주 묻는 질문

DerivedData를 삭제해도 안전한가요?

네. Mac에서 할 수 있는 대용량 삭제 중 가장 안전한 편에 속합니다. DerivedData에는 Xcode가 소스에서 만든 파일만 들어 있습니다. 빌드 산출물, 모듈 캐시, 인덱스, 로그입니다. 코드, 프로젝트 파일, Git 기록은 다른 곳에 있어 전혀 영향을 받지 않습니다. 달라지는 점은 각 프로젝트의 다음 빌드가 전체 재빌드가 되고 인덱싱이 다시 진행된다는 것뿐입니다.

DerivedData는 얼마나 자주 비워야 하나요?

정해진 주기는 없습니다. 신경 쓰일 만큼 커졌을 때 비우면 되고, 활발히 개발하는 사람이라면 대개 한두 달에 한 번 정도입니다. 반드시 비울 만한 때가 두 번 있습니다. 디스크 공간이 급히 필요할 때, 그리고 프로젝트에 설명할 수 없는 빌드 오류가 나거나 코드 완성이 예전 상태에 머물러 있을 때입니다. 이때는 DerivedData 삭제가 표준적인 첫 처방입니다.

DerivedData를 지우면 Xcode가 느려지나요?

일시적으로는 그렇습니다. 각 프로젝트의 첫 빌드는 클린 빌드라 증분 빌드보다 몇 배 오래 걸릴 수 있고, 코드 완성과 검색이 완전히 돌아오려면 백그라운드 인덱싱에 몇 분이 필요합니다. 그 첫 사이클이 지나면 성능은 원래대로 돌아옵니다. DerivedData에 든 것은 캐시일 뿐, 영구히 잃는 최적화가 아닙니다.

~/Library/Developer/CoreSimulator는 지워도 되나요?

무턱대고 지우면 안 됩니다. 이 폴더에는 현재 설치된 시뮬레이터와 그 데이터가 들어 있어, 통째로 지우면 런타임을 다시 설치하기 전까지 시뮬레이터를 쓸 수 없습니다. 대신 이렇게 정리하세요. 고아가 된 기기는 xcrun simctl delete unavailable로 지우고(그 안의 앱과 데이터도 함께 삭제됩니다), 오래된 런타임은 Xcode의 Settings > Components에서, 쓰지 않는 기기는 Devices and Simulators에서 삭제합니다. 직접 비울 것은 Caches 하위 폴더뿐이며, 이때도 Xcode와 Simulator를 종료한 상태여야 합니다.

Clean Build Folder도 같은 일을 하나요?

아닙니다. Product > Clean Build Folder(Shift-Command-K)는 현재 프로젝트의 빌드 산출물만 지우고, 인덱스와 모듈 캐시, 다른 모든 프로젝트의 폴더는 그대로 둡니다. 빌드 문제를 해결하는 도구이지 디스크 공간을 확보하는 도구가 아닙니다. 실제로 공간을 확보하려면 DerivedData 폴더 자체를 삭제해야 합니다.

참고 자료

개발자 저장 공간, 단계별로 정리하기