Skip to content

Instantly share code, notes, and snippets.

@jisungbin
Created May 24, 2026 06:25
Show Gist options
  • Select an option

  • Save jisungbin/1fbee1a7c98091df9bf5ac5d9a7d9a20 to your computer and use it in GitHub Desktop.

Select an option

Save jisungbin/1fbee1a7c98091df9bf5ac5d9a7d9a20 to your computer and use it in GitHub Desktop.
macOS 환경 마이그레이션 가이드 (Mac 공유 모드 + rsync)

macOS 환경 마이그레이션 가이드

Mac 공유 모드 + rsync로 환경설정을 통째로 새 맥에 옮기는 절차

사전 조건

  • 두 맥 모두 Apple Silicon (M1 이상)
  • 데이터 전송 가능한 USB-C 케이블 (10Gbps 이상 권장)
  • 새 맥 초기 설정 완료

1단계: 새 맥 사전 준비

사용자 계정명을 구 맥과 동일하게

~/Library 내부의 절대경로 참조가 깨질 수 있으므로 사용자 계정명을 구 맥과 동일하게 만든다.

Homebrew 설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(선택) 구 맥에서 Brewfile 미리 만들기

구 맥에서:

brew bundle dump --file=~/Brewfile --describe

새 맥에서:

brew bundle --file=~/Brewfile

주요 앱 한 번씩 실행

App Store / 주요 앱들을 한 번씩 실행 → 즉시 종료. ~/Library/Containers/<app> 구조를 미리 만들어두기 위함.


2단계: 구 맥을 공유 모드로 부팅

  1. 구 맥 완전 종료
  2. 전원 버튼을 "옵션이 표시됩니다" 문구가 나올 때까지 계속 누르기
  3. 옵션 클릭 → 관리자 계정 로그인
  4. 상단 메뉴 → 유틸리티Mac 공유 선택
  5. 안내된 비밀번호 메모

3단계: 케이블 연결 및 마운트

  1. 두 맥을 C-to-C 케이블로 연결
  2. 새 맥 Finder 사이드바 위치 → 네트워크에 구 맥 표시
  3. 클릭 → 다른 사용자로 연결 → 2단계 비밀번호 입력
  4. 마운트 후 /Volumes/<구맥이름>/ 로 접근 가능

4단계: rsync로 복사 (새 맥 터미널)

SRC="/Volumes/Macintosh\ HD/Users/jisungbin"   # 구 맥 이름에 맞춰 수정
DST="$HOME"

4-1. Library 하위 (한 번에)

rsync -aE --progress \
  "$SRC/Library/Preferences" \
  "$SRC/Library/Application Support" \
  "$SRC/Library/Containers" \
  "$SRC/Library/Group Containers" \
  "$SRC/Library/Fonts" \
  "$SRC/Library/Services" \
  "$SRC/Library/Keychains" \
  "$DST/Library/"

핵심: 소스 경로에 트레일링 슬래시(/)를 붙이지 않는다.

  • 슬래시 없음 → 폴더 자체가 복사 → ~/Library/Preferences로 들어감 ✅
  • 슬래시 있음 → 내용물만 복사 → 다른 폴더와 섞임 ❌

4-2. dotfiles (한 번에)

rsync -aE --progress \
  "$SRC/.zshrc" "$SRC/.zprofile" "$SRC/.zshenv" \
  "$SRC/.gitconfig" "$SRC/.config" "$SRC/.ssh" "$SRC/.gnupg" \
  "$DST/"

(선택) 한 줄로 묶어 실행

rsync -aE --progress \
  "$SRC/Library/Preferences" "$SRC/Library/Application Support" \
  "$SRC/Library/Containers" "$SRC/Library/Group Containers" \
  "$SRC/Library/Fonts" "$SRC/Library/Services" "$SRC/Library/Keychains" \
  "$DST/Library/" && \
rsync -aE --progress \
  "$SRC/.zshrc" "$SRC/.zprofile" "$SRC/.zshenv" \
  "$SRC/.gitconfig" "$SRC/.config" "$SRC/.ssh" "$SRC/.gnupg" \
  "$DST/"
옵션 의미
-a 권한·시간·심볼릭링크 보존
-E macOS 확장속성/ACL 보존 (plist 인식에 필수)
--progress 진행률 표시
&& 앞 명령이 성공해야 다음 실행 (실패 시 멈춤)

5단계: 복사 후 마무리

# plist 캐시 비우기 (cfprefsd가 옛 값을 캐싱 중)
killall cfprefsd

# 폰트 캐시 초기화
atsutil databases -remove

이후 재부팅하면 설정이 거의 다 반영된다.


6단계: 수동으로 다시 해야 하는 것

복사로 따라오지 않는 항목들:

  • TCC 권한: 시스템 설정 → 개인정보 보호 및 보안 → 화면 녹화 / 접근성 / 전체 디스크 접근 / 자동화 → 앱별로 재허용
  • 블루투스 페어링: 키보드/마우스/이어폰 재페어링
  • Touch ID 지문 등록
  • Apple ID / iCloud 로그인
  • 라이선스 재인증: Adobe, JetBrains, Setapp, Sketch 등

주의: Containers 디렉토리

~/Library/Containers는 SIP/TCC가 강하게 보호한다.

  • 새 맥에서 해당 앱을 한 번도 실행하지 않은 상태에서 덮어쓰는 것이 가장 안전
  • 이미 실행했다면 앱을 종료 후 폴더 통째로 교체:
APP_BUNDLE="com.example.app"
rm -rf "$DST/Library/Containers/$APP_BUNDLE"
rsync -aE --progress \
  "$SRC/Library/Containers/$APP_BUNDLE" \
  "$DST/Library/Containers/"

부록 A: 무엇이 옮겨지는가

옮겨지는 것

경로 포함 내용
~/Library/Preferences/ Dock, Finder, 키보드 단축키, 각 앱 환경설정 plist
~/Library/Application Support/ VS Code 확장·세팅, 브라우저 프로필, iTerm2/Warp, Slack/Notion 등
~/Library/Containers/ 메모, 미리알림, 캘린더, App Store 앱들의 데이터
~/Library/Group Containers/ 앱 그룹 간 공유 데이터, 1Password 등
~/Library/Fonts/ 사용자가 설치한 폰트
~/Library/Services/ 우클릭 서비스 메뉴 항목
~/Library/Keychains/ Wi-Fi 비밀번호, 저장된 사이트 비밀번호, 토큰
~/.zshrc, .zprofile, .zshenv 셸 alias, PATH, 환경변수, 프롬프트
~/.gitconfig git 사용자, alias
~/.config/ nvim, gh, lazygit, starship, tmux 등
~/.ssh/ SSH 개인키, known_hosts, config
~/.gnupg/ GPG 서명 키

안 옮겨지는 것

항목 처리 방법
/Applications 의 앱 본체 Homebrew Bundle / App Store / 직접 다운로드
~/Documents, ~/Desktop, ~/Downloads 별도 rsync 추가 또는 iCloud Drive
TCC 권한 앱별 재허용
블루투스 페어링, Touch ID 재등록
Apple ID, iCloud 로그인 상태 재로그인
앱 라이선스 앱에서 재인증

부록 B: 체감 결과

복사 직후 새 맥에서:

  • Finder 사이드바 즐겨찾기·태그 그대로
  • Dock 앱·정렬 그대로
  • VS Code 확장프로그램·테마·키맵 그대로 (일부 로그인 토큰은 재인증)
  • 터미널 prompt, alias 그대로
  • Safari 북마크·자동완성 그대로
  • 메모 앱의 모든 메모 그대로
  • Wi-Fi 자동 연결

반면 다시 해야 하는 것:

  • 키체인 첫 잠금 해제 (로그인 비밀번호 재입력)
  • "이 앱이 접근하려고 합니다" 권한 팝업 한 번씩 허용
  • 1Password 같은 보안 앱 재로그인 + Secret Key 입력
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment