“Mac을 제대로 알고 싶다면 디렉토리 구조부터!” 숨겨진 시스템 폴더까지 모든 것을 파헤쳐 보겠습니다!
Windows에서 Mac으로 넘어온 사용자들이 가장 당황하는 부분 중 하나가 바로 디렉토리 구조입니다. C 드라이브는 어디 가고, Program Files는 또 어디에 있는 건지… 막막하셨을 거예요.
하지만 macOS의 디렉토리 구조를 이해하면 시스템을 더 효율적으로 사용할 수 있고, 문제가 생겼을 때 직접 해결하는 능력까지 기를 수 있습니다. 오늘은 Apple 개발자 문서를 바탕으로 macOS의 모든 디렉토리를 상세히 알아보겠습니다!
🔄 macOS vs Windows 디렉토리 비교
기본 철학의 차이점
Windows 접근법:
- 드라이브 중심: C:, D:, E: 등 드라이브 문자 사용
- Program Files: 모든 프로그램이 한 곳에
- Documents and Settings: 사용자 데이터 집중화
- System32: 시스템 파일 중앙 관리
macOS 접근법:
- 단일 루트 시스템: 모든 것이
/
에서 시작 - 패키지 기반: 앱이 하나의 .app 파일로 관리
- 사용자 중심: 개인 데이터와 시스템 완전 분리
- UNIX 기반: 전통적인 UNIX 구조 따름
주요 대응 관계표
Windows | macOS | 용도 |
---|---|---|
C:\\Program Files\\ | /Applications/ | 프로그램 설치 위치 |
C:\\Users\\[사용자명]\\ | /Users/[사용자명]/ | 사용자 홈 디렉토리 |
C:\\Users\\[사용자명]\\Documents\\ | /Users/[사용자명]/Documents/ | 문서 폴더 |
C:\\Users\\[사용자명]\\Desktop\\ | /Users/[사용자명]/Desktop/ | 바탕화면 |
C:\\Windows\\System32\\ | /System/ | 시스템 파일 |
C:\\Users\\[사용자명]\\AppData\\ | /Users/[사용자명]/Library/ | 앱 데이터 저장소 |
C:\\ProgramData\\ | /Library/ | 공용 앱 데이터 |
💡 핵심 차이점: Windows의 “파일 확장자 기반” 실행과 달리, macOS는 “패키지 번들” 방식을 사용합니다. 하나의 .app 파일 안에 실행 파일, 리소스, 설정이 모두 포함되어 있어요!
🏠 최상위 루트 디렉토리 구조
macOS의 모든 것은 루트 디렉토리 /
에서 시작됩니다. 터미널에서 ls /
을 입력하면 다음과 같은 구조를 볼 수 있어요.
핵심 최상위 디렉토리
/Applications/
– 애플리케이션 저장소
용도: 모든 GUI 애플리케이션이 설치되는 곳
특징: Finder에서 "응용 프로그램" 폴더로 표시
권한: 관리자 권한 필요 (설치/삭제 시)
주요 내용:
- Safari.app
- Chrome.app
- Microsoft Office.app
- Xcode.app (개발자용)
프로 팁: .app
파일을 우클릭하고 “패키지 내용 보기”를 선택하면 앱 내부 구조를 볼 수 있어요!
/System/
– 핵심 시스템 파일
용도: macOS 핵심 시스템 구성 요소
보안: System Integrity Protection (SIP)으로 보호
접근: 일반 사용자는 읽기만 가능
주요 하위 디렉토리:
/System/Library/ - 시스템 라이브러리
/System/Applications/ - 기본 시스템 앱
/System/Volumes/ - 시스템 볼륨 관리
/Library/
– 공용 라이브러리 및 지원 파일
용도: 모든 사용자가 공유하는 라이브러리
권한: 관리자 권한으로 수정 가능
Windows 대응: C:\\ProgramData\\와 비슷
중요한 하위 폴더:
/Library/Application Support/ - 앱 지원 파일
/Library/Preferences/ - 전역 환경설정
/Library/Fonts/ - 시스템 전체 글꼴
/Library/LaunchDaemons/ - 시스템 서비스
/Library/Extensions/ - 커널 확장
/Users/
– 사용자 홈 디렉토리 모음
용도: 모든 사용자의 개인 폴더
구조: /Users/[사용자명]/
권한: 각 사용자는 자신의 폴더만 완전 접근
기본 사용자들:
/Users/Shared/ - 모든 사용자 공유 폴더
/Users/Guest/ - 게스트 사용자 (활성화 시)
/usr/
– UNIX 시스템 리소스
용도: UNIX 전통에 따른 사용자 프로그램
특징: "User System Resources"의 줄임말
주요 구성:
/usr/bin/ - 사용자 실행 파일 (ls, cp, mv 등)
/usr/sbin/ - 시스템 관리 실행 파일
/usr/local/ - 로컬 설치 프로그램 (Homebrew 등)
/usr/lib/ - 공유 라이브러리
/usr/include/ - C/C++ 헤더 파일
/var/
– 가변 데이터 저장소
용도: 자주 변경되는 시스템 데이터
특징: "variable"의 줄임말
중요 하위 디렉토리:
/var/log/ - 시스템 및 앱 로그 파일
/var/tmp/ - 임시 파일 (재부팅 시 유지)
/var/db/ - 데이터베이스 파일
/var/mail/ - 메일 스풀
/var/run/ - 실행 중인 프로세스 정보
/tmp/
– 임시 파일 저장소
용도: 임시 파일 저장
특징: 재부팅 시 자동 삭제
권한: 모든 사용자 읽기/쓰기 가능
주의: 중요한 파일 저장 금지
특수 디렉토리들
/Volumes/
– 마운트된 볼륨
용도: 외장 드라이브, 네트워크 드라이브 마운트 지점
동적 생성: 디스크 연결 시 자동 생성
예시:
/Volumes/Macintosh HD - 메인 하드드라이브
/Volumes/USB Drive - 외장 USB
/Volumes/Time Machine - 백업 드라이브
/dev/
– 장치 파일
용도: 하드웨어 장치에 대한 인터페이스
특징: 실제 파일이 아닌 가상 인터페이스
주요 장치:
/dev/disk0 - 첫 번째 디스크
/dev/null - 모든 출력을 버리는 특수 파일
/dev/random - 랜덤 데이터 생성
/dev/tty - 터미널 인터페이스
👤 사용자별 홈 디렉토리 완전 분석
사용자 홈 디렉토리 /Users/[사용자명]/
는 Mac 사용의 핵심입니다. 이곳의 구조를 완벽히 이해하면 파일 관리가 훨씬 쉬워져요!
기본 사용자 폴더 구조
공개 폴더 (Finder에서 보이는 것들)
~/Desktop/
– 바탕화면
용도: 바탕화면에 표시되는 모든 파일
특징: Finder와 실시간 동기화
팁: 바탕화면을 깔끔하게 유지하면 성능 향상
~/Documents/
– 문서
용도: 사용자 문서 파일 저장
iCloud 동기화: 기본적으로 iCloud Drive와 연동
자동 생성: 대부분의 앱이 기본 저장 위치로 사용
~/Downloads/
– 다운로드
용도: 웹 브라우저 및 앱에서 다운로드한 파일
자동 정리: Safari는 30일 후 자동 삭제 옵션
팁: 정기적으로 정리하여 저장공간 확보
~/Pictures/
– 사진
용도: 사진 및 이미지 파일
앱 연동: 사진 앱의 기본 라이브러리 위치
iCloud 동기화: iCloud 사진과 연동 가능
~/Music/
– 음악
용도: 음악 파일 및 iTunes 라이브러리
구조:
- ~/Music/iTunes/ (구버전)
- ~/Music/Music/ (최신 버전)
- ~/Music/GarageBand/ (GarageBand 프로젝트)
~/Movies/
– 동영상
용도: 동영상 파일 저장
앱 연동:
- Final Cut Pro 라이브러리
- iMovie 프로젝트
- 개인 동영상 파일
~/Public/
– 공용 폴더
용도: 다른 사용자와 파일 공유
네트워크 접근: 파일 공유 활성화 시 네트워크에서 접근 가능
하위 폴더: Drop Box (다른 사용자가 파일 넣기만 가능)
숨겨진 사용자 폴더들
Finder에서는 기본적으로 보이지 않지만, 중요한 역할을 하는 폴더들이 있습니다.
~/Library/
– 개인 라이브러리 (가장 중요!)
표시 방법: Finder → Option 키 + 이동 메뉴 → 라이브러리
용도: 개인 앱 데이터, 설정, 캐시 저장
Windows 대응: AppData\\Roaming과 비슷
주요 하위 디렉토리 상세 분석:
~/Library/Application Support/
용도: 앱별 데이터 파일 저장
구조: 앱 이름별로 폴더 구분
예시:
- ~/Library/Application Support/Google/Chrome/ (크롬 데이터)
- ~/Library/Application Support/Discord/ (디스코드 데이터)
- ~/Library/Application Support/Spotify/ (스포티파이 데이터)
- ~/Library/Application Support/Code/ (VS Code 설정)
~/Library/Preferences/
용도: 앱 환경설정 파일 (.plist)
특징: XML 또는 바이너리 형식
편집: Property List Editor 또는 defaults 명령어
예시:
- com.apple.finder.plist (Finder 설정)
- com.google.Chrome.plist (Chrome 설정)
- com.microsoft.VSCode.plist (VS Code 설정)
~/Library/Caches/
용도: 앱 캐시 파일 (임시 데이터)
특징: 삭제해도 앱이 재생성
용량 관리: 정기적 삭제로 공간 확보 가능
대표적인 캐시:
- com.apple.Safari/ (Safari 캐시)
- com.spotify.client/ (Spotify 캐시)
- com.adobe.* (Adobe 앱들 캐시)
~/Library/Logs/
용도: 개인 앱 로그 파일
디버깅: 앱 문제 해결 시 참조
위치: /Applications/Utilities/Console.app에서 확인 가능
~/Library/Containers/
용도: 샌드박스 앱 데이터
보안: 앱별로 격리된 환경 제공
구조: 앱 번들 ID별로 폴더 분리
Mac App Store 앱들:
- com.apple.mail/ (Mail 앱)
- com.apple.Notes/ (노트 앱)
- com.microsoft.Word/ (Mac App Store용 Word)
~/Library/Group Containers/
용도: 앱 그룹 간 데이터 공유
예시: iOS 앱과 macOS 앱 간 데이터 동기화
개발자 도구: Xcode 관련 데이터 저장
기타 숨겨진 중요 폴더들
~/.ssh/
용도: SSH 키 및 설정 파일
보안: 매우 중요한 보안 정보
파일:
- id_rsa (개인 키)
- id_rsa.pub (공개 키)
- known_hosts (접속 기록)
- config (SSH 설정)
~/.config/
용도: XDG 규약에 따른 설정 파일
주로 사용: 개발 도구들 (Git, npm 등)
크로스 플랫폼: Linux와 공통 규약
~/.local/
용도: 사용자별 로컬 설치
구조:
- ~/.local/bin/ (개인 실행 파일)
- ~/.local/lib/ (개인 라이브러리)
- ~/.local/share/ (앱 데이터)
🔍 숨겨진 시스템 디렉토리 탐험
macOS에는 일반 사용자에게는 숨겨져 있지만, 시스템 관리나 문제 해결에 중요한 디렉토리들이 많습니다.
숨겨진 폴더 표시 방법
Finder에서 숨겨진 파일 보기
방법 1: 단축키 사용
Cmd + Shift + . (점)
방법 2: 터미널 명령어
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder
중요한 숨겨진 시스템 디렉토리
/private/
– 시스템 보안 영역
용도: 보안이 중요한 시스템 파일들
특징: /tmp, /var 등이 실제로는 여기에 위치
실제 구조:
/private/tmp → /tmp (심볼릭 링크)
/private/var → /var (심볼릭 링크)
/private/etc → /etc (심볼릭 링크)
/etc/
– 시스템 설정 파일
용도: 시스템 전역 설정 파일
UNIX 전통: "Et cetera" (기타 등등)
권한: 관리자만 수정 가능
중요 파일들:
/etc/hosts - DNS 오버라이드
/etc/passwd - 사용자 계정 정보 (Mac에서는 제한적)
/etc/sudoers - sudo 권한 설정
/etc/paths - 시스템 PATH 설정
/etc/shells - 사용 가능한 쉘 목록
/cores/
– 코어 덤프 파일
용도: 앱 충돌 시 메모리 덤프
디버깅: 개발자가 충돌 원인 분석
관리: 자동 생성되며 용량이 클 수 있음
정리: 정기적으로 삭제 권장
/opt/
– 옵션 소프트웨어
용도: 서드파티 패키지 설치
사용 예:
- Homebrew (/opt/homebrew/)
- MacPorts (/opt/local/)
- Docker (/opt/docker/)
중요한 시스템 로그 위치
시스템 로그 디렉토리
/var/log/system.log - 일반 시스템 로그
/var/log/kernel.log - 커널 관련 로그
/var/log/install.log - 소프트웨어 설치 로그
/var/log/wifi.log - Wi-Fi 연결 로그
확인 방법:
Console 앱 또는 터미널에서 tail -f 명령어 사용
사용자별 로그
~/Library/Logs/DiagnosticReports/ - 앱 충돌 리포트
~/Library/Logs/CrashReporter/ - 구버전 충돌 리포트
👨💻 개발자를 위한 특수 디렉토리
개발자라면 알아두어야 할 macOS만의 특별한 디렉토리 구조가 있습니다.
Xcode 관련 디렉토리
~/Library/Developer/
용도: Xcode 및 개발 도구 데이터
구조:
- ~/Library/Developer/Xcode/ - Xcode 프로젝트 데이터
- ~/Library/Developer/CoreSimulator/ - iOS 시뮬레이터
- ~/Library/Developer/Shared/ - 공유 빌드 데이터
DerivedData 관리
위치: ~/Library/Developer/Xcode/DerivedData/
용도: 빌드 캐시 및 인덱싱 데이터
관리: 정기적 삭제로 공간 확보 (수십GB 가능)
삭제 방법: Xcode → Preferences → Locations → Derived Data → 화살표 클릭
패키지 매니저별 디렉토리
Homebrew
Intel Mac: /usr/local/
Apple Silicon Mac: /opt/homebrew/
구조:
- bin/ - 실행 파일
- lib/ - 라이브러리
- include/ - 헤더 파일
- share/ - 공유 데이터
- Caskroom/ - GUI 앱들
Node.js & npm
전역 모듈: /usr/local/lib/node_modules/ (Intel)
/opt/homebrew/lib/node_modules/ (Apple Silicon)
사용자별: ~/.npm/ (캐시)
~/.nvm/ (Node Version Manager)
Python 관련
시스템 Python: /System/Library/Frameworks/Python.framework/
Homebrew Python: /usr/local/bin/python3 (Intel)
/opt/homebrew/bin/python3 (Apple Silicon)
사용자 패키지: ~/Library/Python/3.x/
가상환경: ~/.virtualenvs/ (virtualenvwrapper)
개발 도구별 설정 위치
Git
전역 설정: ~/.gitconfig
시스템 설정: /etc/gitconfig
SSH 키: ~/.ssh/
VS Code
설정: ~/Library/Application Support/Code/User/settings.json
확장: ~/Library/Application Support/Code/User/extensions/
Docker
데이터: ~/Library/Containers/com.docker.docker/
설정: ~/.docker/
🔐 디렉토리 권한과 보안 이해하기
macOS의 보안은 디렉토리별 세밀한 권한 관리로 이루어집니다.
권한 시스템 기초
UNIX 권한 기본 구조
형식: drwxrwxrwx
d: 디렉토리 (파일은 -)
rwx: 소유자 권한 (읽기/쓰기/실행)
rwx: 그룹 권한
rwx: 기타 사용자 권한
숫자 표현:
4: 읽기 (r)
2: 쓰기 (w)
1: 실행 (x)
주요 디렉토리별 권한
디렉토리 | 권한 | 소유자 | 의미 |
---|---|---|---|
/System/ | 755 | root:wheel | 시스템만 쓰기 가능 |
/Applications/ | 775 | root:admin | 관리자 그룹만 수정 |
/Library/ | 755 | root:wheel | 관리자만 수정 |
~/ | 755 | user:staff | 사용자만 완전 접근 |
~/Library/ | 700 | user:staff | 사용자만 접근 |
macOS 고유 보안 기능
System Integrity Protection (SIP)
보호 대상:
- /System/
- /usr/ (일부)
- /bin/
- /sbin/
확인 방법:
csrutil status
비활성화 (권장하지 않음):
복구모드에서 csrutil disable
Gatekeeper
목적: 악성 소프트웨어 차단
확인: 시스템 환경설정 → 보안 및 개인정보
우회: 앱 우클릭 → 열기
FileVault
기능: 디스크 전체 암호화
위치: ~/Library/ 등 사용자 데이터 보호
성능: 최신 Mac에서는 성능 영향 미미
권한 문제 해결
자주 발생하는 권한 문제들
문제 1: 앱 설치 시 권한 오류
# 해결법: 관리자 권한으로 설치
sudo installer -pkg package.pkg -target /
# 또는 Applications 폴더 권한 확인
ls -la /Applications/
문제 2: 홈 디렉토리 권한 오류
# 권한 복구
sudo chown -R $(whoami):staff ~
sudo chmod -R 755 ~
sudo chmod 700 ~/Library
문제 3: Homebrew 권한 문제
# 소유권 변경 (Intel Mac)
sudo chown -R $(whoami) /usr/local/*
# Apple Silicon Mac
sudo chown -R $(whoami) /opt/homebrew
🛠️ 실전 활용 팁과 명령어
터미널로 디렉토리 탐색하기
기본 탐색 명령어
# 현재 위치 확인
pwd
# 디렉토리 이동
cd /Applications
cd ~ # 홈 디렉토리로
cd - # 이전 디렉토리로
# 내용 보기
ls -la # 상세 정보와 숨김 파일
ls -lah # 파일 크기를 읽기 쉽게
# 디렉토리 구조 보기
tree # Homebrew로 설치 필요
find . -type d -maxdepth 2 # 2레벨까지만
고급 검색 및 필터링
# 특정 파일 찾기
find /Applications -name "*.app"
find ~ -name "*.log" -mtime +30 # 30일 이상된 로그
# 크기별 정렬
du -sh * | sort -hr # 크기순 정렬
du -sh ~/Library/* | sort -hr # 라이브러리 폴더별 크기
# 권한별 필터
find ~ -type f -perm 777 # 모든 권한이 열린 파일
유용한 디렉토리 관리 스크립트
빠른 폴더 접근 별칭
# ~/.zshrc 또는 ~/.bash_profile에 추가
alias apps="cd /Applications"
alias lib="cd ~/Library"
alias logs="cd ~/Library/Logs"
alias prefs="cd ~/Library/Preferences"
alias support="cd ~/Library/Application\\ Support"
# 시스템 디렉토리
alias syslib="cd /Library"
alias syslogs="cd /var/log"
자동 정리 스크립트
#!/bin/bash
# cleanup.sh - 시스템 정리 스크립트
echo "🧹 macOS 정리 시작..."
# 캐시 정리
echo "캐시 정리 중..."
sudo rm -rf ~/Library/Caches/*
sudo rm -rf /Library/Caches/*
# 로그 파일 정리 (30일 이상)
echo "오래된 로그 정리 중..."
find ~/Library/Logs -name "*.log" -mtime +30 -delete
sudo find /var/log -name "*.log" -mtime +30 -delete
# 다운로드 폴더 정리 (30일 이상)
echo "다운로드 폴더 정리 중..."
find ~/Downloads -mtime +30 -delete
# 휴지통 비우기
echo "휴지통 비우는 중..."
osascript -e 'tell application "Finder" to empty trash'
echo "✅ 정리 완료!"
디렉토리 모니터링
실시간 파일 변경 감시
# 특정 디렉토리 모니터링
fswatch ~/Documents | while read file; do
echo "변경된 파일: $file"
done
# 로그 파일 실시간 확인
tail -f /var/log/system.log
# 디스크 사용량 모니터링
watch -n 5 'df -h'