저는 포맷을 하다가 중요 파일을 날려먹고 한숨을 내 쉬는 일이 많았습니다. 아직 맥을 산 이후로 딱 한번만 공장 초기화를 했지만, 언젠가 맥을 초기화하거나 다른 기계로 옮겨갈 경우에 무엇무엇을 챙겨야할까 생각하며 맥을 포맷하기 전에 개발자라면 꼭 해야할 일들을 정리해보기로 했습니다.

※ 이 글은 지속적으로 연구 및 갱신됩니다.

1. SSH

Mac을 쓰는 개발자라면 아마 모두가 SSH를 쓸거라고 봅니다. SSH 관련된 설정들은 보안 문제가 걸려있으므로 백업 1순위가 아닐까 싶습니다.

SSH Key

~/.ssh/id_rsa 파일과 ~/.ssh/id_rsa.pub 파일을 챙깁시다. 각각 비밀키와 공개키입니다. (아주 당연한 이야기지만) 비밀키는 gist 등에 올리면 위험합니다.

SSH Config

~/.ssh/config 파일을 백업합시다.

2. VCS

버전관리를 한다면 버전관리에 쓰는 설정들도 백업하는게 좋습니다.

Git

~/.gitconfig 파일에 설정이 저장되고, ~/.gitignore_global 파일에 전역적으로 무시할 파일이 저장됩니다.

Hg (Mercurial)

User 단위 설정은 ~/.hgrc 에 저장됩니다.

3. GPG

keybase.io나 그 외의 GPG Key를 사용하는 경우엔 해당 키값도 보관해야합니다. 저장 위치는 gpg -K 명령어를 통해 알 수 있는데, 일반적으로 ~/.gnupg/ 입니다.

4. Bash

Bash를 시작할 때 실행되는 ~/.bash_profile 파일도 백업해두면 나중에 이식할 때 자신이 무엇을 설치했었는지 알 수 있어 좋습니다. 프로그램에 따라 ~/.bashrc 파일을 사용하기도 하는데, 한쪽으로 내용을 몰아주는게 좋습니다.

5. Brew

Mac에서 개발을 하다보면 brew로 이것저것 설치하게 되는데요, brew list 명령어를 실행하면 자신이 설치한 프로그램 목록이 나옵니다.

6. Language Version Manager

언어를 단일설치했다면 그냥 그대로 옮기면 되겠지만 여러 버전을 관리 툴을 사용해서 설치했다면 버전들도 옮겨야할 것입니다.

Python - pyenv

pyenv versions를 실행하면 설치한 모든 Python 버전을 얻을 수 있습니다.

Python - virtualenv-wrapper

Python을 사용하는 경우엔 virtualenv-wrapper도 많이 사용합니다. lsvirtualenv를 사용하면 생성한 모든 virtualenv 이름을 얻을 수 있습니다.

Node.js - nvm

nvm ls를 실행하면 설치한 모든 node.js 버전을 얻을 수 있습니다

Ruby - rvm

Ruby의 경우엔 rvm ls 입니다.

7. Editor

사용하는 프로그램들의 설정 또한 백업하는 것이 좋습니다.

Vim

~/.vimrc 파일에 설정, ~/.vim 디렉토리에 관련 파일들이 위치합니다.

JetBrains 제품군

File > Export Settings... 를 이용하면 추출할 수 있습니다.

Atom

~/.atom 디렉토리에 여러 파일이 있는데, 여기서 백업해야하는 것은 .json, .cson, .coffee, .less 파일입니다. 패키지 목록은 다음 명령어로 백업합니다.

$ apm list --installed --bare > packages.list

복원은 다음과 같이 합니다.

$ apm install `cat packages.list`

7. Global Packages

패키지를 전역적으로 설치해서 사용하는 경우도 있습니다. 해당 툴이 없으면 불편해지는 경우도 많으므로 백업해둡시다.

Python

pip freeze 명령을 통해 얻을 수 있습니다.

Node.js

npm ls -g 명령을 통해 얻을 수 있습니다.

Ruby

gem list --local 명령을 통해 얻을 수 있습니다.

8. Fonts

이 글을 참조하세요

9. 그 외

  • 아주 당연한 이야기지만 모든 소스코드는 저장소에 올려놓던가, 백업하셔야 합니다.
  • Babel을 사용하신다면 ~/.babel.json 을 백업하셔야 할 수도 있습니다.
  • 설치하신 Database의 설정, 사용자, 내용 등도 백업하세요.
  • 브라우저의 북마크나 설정 등도 백업하셔야 합니다. Firefox Sync 등의 브라우저 동기화 기능을 이용하면 편리합니다.
  • FTP 등을 사용하신다면 해당 설정도 백업하셔야 합니다.
  • 중요한 Wi-Fi 비밀번호 등이 Keychains에 있지 않나 확인해보세요.

요약

  • ~/.ssh/id_rsa
  • ~/.ssh/id_rsa.pub
  • ~/.ssh/config
  • ~/.gitconfig
  • ~/.gitignore_global
  • ~/.hgrc
  • ~/.gnupg/ (DIR)
  • ~/.bash_profile
  • ~/.bashrc
  • $ brew list > brew_installed_programs
  • $ pyenv versions > python_versions
  • $ lsvirtualenv > python_virtualenvs
  • $ nvm ls > node_versions
  • $ rvm ls > ruby_versions
  • ~/.vimrc
  • ~/.vim (DIR)
  • ~/.atom/*.json
  • ~/.atom/*.cson
  • ~/.atom/*.coffee
  • ~/.atom/*.less
  • $ apm list --installed --bare > packages.list
  • $ pip freeze > python_requirements.txt
  • $ npm ls -g > node_requirements.txt
  • $ gem list --local > ruby_requirements.txt