맥에서 모든 설정 백업하기

Roeniss Moon·2020년 8월 28일
1
post-thumbnail

Mackup을 쓰지 않는다. 왜냐면...

  1. 내 앱들을 모두 백업하는 것보다는, 내가 일일이 하나하나 검수하면서 뭘 백업할지 결정하고 싶다.
  2. 일부 설정은 원격 리눅스 서버에 쓰고 싶을 때가 있는데 (ex. .zshrc) Mackup으로 한 번에 관리하면 이 부분을 유연하게 처리하기가 어려울 것으로 생각되어서.
  3. 간지가 안난다.

일단 무엇보다 중요한 것은 정확히 무엇을 백업할 것인지 모든 것을 리스트업 하는 것이다.

맥북, 즉 OSX의 세팅 & 맥과 상관없는 세팅 (ex. CLI 앱들)을 모두 확인해야 한다.

brew 설치 정보 확인

  • 😞 brew list : 디펜던시까지 보여주는 바람에 헷갈린다.
  • 🙂 brew leaves | wc : 내가 직접 설치한 것만 보여줘서 좋다.
  • 😄 brew bundle dump && cat Brewfile : 나중에 재설치할 수 있게 스크립트를 만드는 커맨드다. brew bundle로 모든 brew 설치 내역을 복원할 수 있는데 그럴 목적으로 쓰는 명령어는 아니고, brew cask로 설치한 (GUI) 애플리케이션이 어떤 것들인지 쉽게 알 수 있어서 사용한다.

일단 이 방법을 이용해 brew로 설치한 항목 중 이젠 불필요해진 앱이 있는지 체크한다. 아래는 몇몇 앱을 삭제하고 다시 dump한 모습.

❯❯❯ brew bundle dump && cat Brewfile
tap "adoptopenjdk/openjdk"
tap "heroku/brew"
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-versions"
tap "homebrew/core"
tap "homebrew/services"
tap "romkatv/powerlevel10k"
brew "ant"
brew "autojump"
brew "openssl@1.1"
brew "bat"
brew "cabextract"
brew "cmake"
brew "exa"
brew "fd"
brew "fzf"
brew "git-flow-avh"
brew "gnupg"
brew "pkg-config"
brew "gradle"
brew "htop"
brew "ipython"
brew "jq"
brew "maven"
brew "neofetch"
brew "node"
brew "pinentry-mac"
brew "redis"
brew "rmtrash"
brew "stow"
brew "tldr"
brew "watch"
brew "watchman"
brew "yarn"
brew "zsh"
brew "zsh-completions"
brew "heroku/brew/heroku"
brew "romkatv/powerlevel10k/powerlevel10k"
cask "adoptopenjdk11"
cask "adoptopenjdk8"
cask "android-ndk"
cask "android-sdk"
cask "discord"
cask "iterm2"
cask "mongodb-compass"
cask "ngrok"
cask "notion"
cask "postman"
cask "sourcetree"
cask "typora"
cask "visual-studio-code"

*참고로 이 위의 출력 결과는, 이 아래에서 서술할 'brew로 대체 가능한 앱들'을 추가한, final version이다. 혼란스러울까봐 미리 언급.

brew, brew cask 로 설치한 애들을 확인하자.

별도로 설치한 GUI 앱 확인

  • 😞 'mac terminal app list'같은 걸로 검색해서 나오는 방법들은 (1) 과하게 많거나(default app까지 다 보여줌) (2) 일부 앱이 안보이는 이슈가 있었다.

  • 🙂 앱이 뭐 100개쯤 되는 것도 아니어서 그냥 눈으로 보면서 적는게 차라리 마음이 낫더라.

일명 LaunchPad 화면이라고 불리는... 맥 터치패드에서 손가락 네 개를 올리면 나오는... 그 화면에서 추가로 설치해야하는 앱이 있는지 확인한다. brew cask에 없는 앱들만 추리면 된다.

따로 대충 적어두었다. 앱별로 백업 전략이 다를 테니까 일단 취합만 한다.

❯❯❯ cat otherApps.txt
insomnia
navicat premium
anysign4pc
figma
spark
pixelstyle
xcode
chrome
magnet
memory diag
한컴뷰어
jetbrains toolbox
karabiner-elements / eventviewer
amphetamine
docker
xcode
robo 3t
time out
MS office
kakaotalk
MS todo

이렇게 적어놓고 보니 두 가지 생각이 든다.

  1. 아... 수작업 많이 해야겠다. 예를 들면 젯브레인 툴박스 설치 후 필요한 프로그램은 계정 인증 후 개별 설치를 눌러줘야 할 거고, spark나 figma는 로그인 다 해줘야겠네.

  2. 근데 설치 자체는... 일부 앱들을 brew cask로 설치할 수 있을 것 같은데?

2번 생각 때문에 하나씩 구글에 검색해서 brew 배포판이 있는지 확인했다. 의외로 많더라. 설치할 때 무조건 한번씩 검색해 봐야겠다 앞으론..

그리고 또 일부 앱들은 App store를 통해서 받은 것들이다 그것들은 앱스토어에 접속하면 마우스 클릭 몇 번만으로 (그나마) 쉽게 설치할 수 있으니 또 분리를 한다.

❯❯❯ cat otherApps.txt
# brew cask
insomnia
navicat-premium
figma
slack
google-chrome
jetbrains-toolbox
robo-3t
karabiner-elements
microsoft-office

# manual install
docker
anysign4pc

# AppStore
Time out
Microsoft To Do
Xcode
Photo Image Editor Pixelstyle
한컴오피스 한글 2014 VP 뷰어
Amphetamine
Magnet 마그넷
Spark - Email App by Readdle
카카오톡
Memory Diag

Brewfile을 직접 수정해서 cask로 설치할 수 있는 앱들을 추가하고, App Store 앱들은 아까 말했듯 편하게 설치할 수 있으니 manual install 항목만 남긴다.

❯❯❯ cat otherApps.txt
docker
anysign4pc

이 두 개 항목은 나중에 따로 관리를 해줘야 된다는 소리다. 잠시 킵.

AppStore 앱 확인, brew로 뺄 수 있는 애들 확인, 정말 수동 설치가 필요한 애들 확인

각 앱들의 설정/커스텀 확인

위 파일들을 확인하면서 "설정파일을 별도로 보관해야 하는 앱"을 확인한다. 예를 들어 iterm2의 프로필, karabiner의 세팅 등등. 이런 경우를 살펴보자.

❯❯❯ cd && ls -al # 필요없는 부분은 삭제했다
.AnySign4PC/ # 키가 있는데 백업하기 싫어서 그냥 버리기로 함
.config/ # 안에 이런저런 설정이 있는데 살릴건 karabiner.json 뿐
.docker/
.embedmongo/ 
.expo/
.fastlane/
.gem/
.gnupg/ # pubring.kbx 파일 안에 private/public 키가 모두 들어있다. 안전을 위해 USB로 물리적 백업을 하기로 했다.
.gradle/
.ipython/
.jupyter/
.kube/
.local/
.m2/
.mume/
.npm/
.oh-my-zsh/ # stow 사용할 예정. 하는 김에 plugin 쪽은 git submodule 활용해 봐야지.
.react-native-cli/
.softforum/
.ssh/ # config 파일은 stow, pem 파일들은 USB로.
.tldrc/
.tooling/
.Trash/
.vim/
.vscode/ 
Applications/
Desktop/ # 뒷정리...
Documents/ # 뒷정리2...
Downloads/ # ㄷㅈㄹ3...
IdeaProjects/
Library/
Movies/
Music/
Pictures/
Postman/
Public/
roeniss.custom.setup/ # iterm Profile 백업 파일이 들어있다. stow 사용
tmp/
workspace/
.bash_history
.CFUserTextEncoding
.DS_Store
.gitconfig # stow. 회사 계정이라서 백업 안해도 될 것 같긴 한데 [alias] 가 다 이쪽에 있어서 일단은 stow로
.gitconfig-personal # stow. 이쪽이 내 본계정이다.
.gitconfig-personal.swp # 머야 이건; 삭제
.gitflow_export 
.gitignore_global # 이런게 언제 생겼지..? 근데 내용 보니까 좋은 것 같아서 stow
.h2.server.properties
.hgignore_global
.jjs.history
.lesshst
.netrc
.node_repl_history
.npki_pkcs11.cnf
.p10k.zsh # 무조건 들고 가야된다...
.python_history
.rediscli_history
.stCommitMsg
.viminfo
.vimrc # ㅎㅇㅎㅇ
.yarnrc
.zcompdump
.zcompdump-roeniss-milk-pc-5.7.1
.zcompdump-roeniss-milk-pc-5.8
.zsh_history  
.zshrc # 이것도 챙겨야지 stow ㄱㄱㄱ
.zshrc.backup
.zshrc.pre-oh-my-zsh
calendar_api_token.json # 이걸로 구글 캘린더 CLI (goocal) 돌리는데, 일단 하는 김에 USB 행
client_secret.json # 이거는 goocal 세팅 때문에 다운 받은거니까 삭제

정리하면 아래와 같다.

# gnu stow
.config/karabiner/karabiner.json
.oh-my-zsh/custom/plugins/alias-tips, zsh-autosuggestions, zsh-history-substring-search, zsh-syntax-highlighting (git submodule로 관리)
.oh-my-zsh/custom/scripts/gopen
.oh-my-zsh/custom/aliases.sh
roeniss.custom.setup/iterm-profile.json
.gitconfig
.gitconfig-personal
.gitignore_global
.p10k.zsh
.vimrc
.zshrc

# usb
.gnupg/ # pubring.kbx 파일 안에 private/public 키가 모두 들어있다. 안전을 위해 USB로 물리적 백업을 하기로 했다.
.ssh/ # 폴더 통째로 USB로
calendar_api_token.json # 이걸로 구글 캘린더 CLI (goocal) 돌리는데, 일단 하는 김에 USB 행

깃헙에 따로 올리겠지만 일단 dotfiles 레포는 아래와 같이 생겼다. setup.sh이 stow를 작동시킨다.

그 외에 확인해야 할 백업 정보는 다음과 같다.

  • jetbrains settings sync
  • vscode settings sync
  • chrome - 자동 싱크

맥 시스템 관련 백업

맥에서 제공해주는 migration assistant가 과연 모든 시스템 환경설정과 로컬 폰트를 옮겨줄지 의문이지만... 옮길 때 해봐야 될 것 같다.

일부러 안넣은 것들

다음 요소들은 일일이 넣기 귀찮기도 해서 그냥 필요할 때 받기로 했다.

  • pip3 list
  • npm list
  • yarn list
profile
기능이 아니라 버그예요

0개의 댓글