Mackup으로 시스템 설정 파일(dotfiles) 백업하고 복원하기

들어가며

리눅스Linux나 맥OSmacOS 환경에서 프로그래밍을 하는 경우 $HOME 디렉터리 아래에 .으로 시작하는 많은 설정 파일들이 만들어집니다. 이 파일들을 운영체제에서 기본적으로 보이지 않도록 숨겨줍니다. 이름이 점으로 시작해서 닷파일dotfiles라고도 부릅니다.

이 파일들을 보려면 맥OS 파인더 기준 ⌘ + ⇧ + . 단축키를 입력합니다. 커맨드라인에서는 ls-a 옵션과 함께 실행하면 보입니다.

.으로 시작하는 파일을 파인더에서 볼 수 있습니다.

GitHub에서 자주 보이는 dotfiles 저장소들도 자신의 설정파일을 관리하기 위한 용도로 사용되곤합니다. 이 파일들을 직접 관리하는 것도 방법입니다만, 단순히 주요 닷파일을 백업, 복원만 하고 싶은 경우 Mackup을 사용해 문제를 좀 더 쉽게 해결할 수 있습니다.

맥업(Mcakup) 설치

맥OS에서는 홈브류Homebrew를 사용해 손쉽게 맥업을 설치할 수 있습니다. 맥업은 파이썬 기반으로 리눅스에서는 pip를 통해서 설치할 수 있습니다. 자세한 내용은 공식 저장소의 README를 참고해주세요.

$ brew install mackup

명령어를 실행해 설치가 잘 되었는지 확인해봅니다.

$ mackup --version
Mackup 0.8.29

맥업 설정하기

맥업을 사용하기에 앞서 먼저 설정 파일을 만들어주는 게 좋습니다. 맥업의 설정 파일은 ~/.mackup.cfg에 생성합니다. 다음 내용을 추가해줍니다.

[storage]
engine = dropbox

여기서는 명시적으로 스토리지를 지정했는데, 맥업의 기본 스토리지는 드롭박스이므로 드롭박스를 사용한다면 작성하지 않아도 무방합니다. 이외에 구글 드라이브Google Drive, 아이클라우드iCloud를 백엔드로 사용할 수도 있습니다. 파일 시스템을 사용해 임의의 디렉터리에 저장하는 것도 가능합니다. 이에 대해서는 공식 문서를 참고해주세요.

[storage]
engine = google_drive # or icloud

스토리지를 정했으면 이제 백업할 애플리케이셔을 지정해야합니다. 지원하는 애플리케이션은 공식 저장소의 READMEmackup list 명령어로 확인해볼 수 있습니다.

$ mackup list
Supported applications:
 - 1password-4
 - 2do
 - ack
 - adium
...

각 애플리케이션들은 백업할 파일들의 정보를 담고 있습니다. 예를 들어 ssh 애플리케이션을 지정하면 backup 실행시 ~/.ssh/config.ssh/authorized_keys 파일을 스토리지에 저장해줍니다.

[applications_to_sync]
ssh

각 애플리케이션에 대한 좀 더 자세한 정보는 show 서브 커맨드로 확인해볼 수 있습니다.

$ mackup show ssh
Name: SSH
Configuration files:
 - .ssh/config
 - .ssh/authorized_keys

백업할 애플리케이션은 [applications_to_sync] 섹션, 무시할 애플리케이션은 [applications_to_ignore] 섹션에 한 줄에 하나씩 작성해줍니다. 최종적인 설정 파일은 다음과 같습니다.

[storage]
engine = dropbox

[applications_to_sync]
ssh

[applications_to_ignore]

맥업 사용해서 설정 파일들 저장하기

설정이 끝났으면 이제 mackup backup 명령어로 설정 파일들을 스토리지에 저장해줍니다.

$ mackup backup
Mackup needs a directory to store your configuration files
Do you want to create it now? </Users/nacyot/Dropbox/Mackup> <Yes|No>Yes
Backing up .ssh/config ...

처음 실행하면 Dropbox 아래에 설정 파일 저장 디렉터리를 만들 것인지 물어봅니다. Yes를 입력하면 .ssh/config가 백업되는 것을 확인할 수 있습니다.

Mackup 프로젝트의 README에도 설명되어있습니다만, 동작 원리는 간단합니다. 원래 설정 파일을 스토리지에 복사하고, 삭제해줍니다. 그리고 스토리지에 있는 파일로 링크를 걸어줍니다. 확인해봅니다.

$ ls -al ~/Dropbox/Mackup/.ssh/config
-rw-------@ 1 nacyot  staff  167 Jun 27 10:50 /Users/nacyot/Dropbox/Mackup/.ssh/config

$ ls -al ~/.ssh/config
lrwxr-xr-x  1 nacyot  staff  40 Jun 27 10:50 /Users/nacyot/.ssh/config -> /Users/nacyot/Dropbox/Mackup/.ssh/config

커스텀 애플리케이션 정의

맥업의 애플리케이션 별 백업 파일은 다음과 같이 정의되어있습니다.

[application]
name = SSH

[configuration_files]
.ssh/config
.ssh/authorized_keys

이 내용은 맥업 공식 저장소에서도 확인할 수 있습니다. 간단하죠?

유명한 애플리케이션이라면 저장소에 직접 기여해보는 것도 방법이지만, 로컬에서 간단히 커스텀 애플리케이션을 추가해서 사용할 수 있습니다. .mackup/<APPLICATION_NAME>.cfg 파일에 위와 같은 형식으로 애플리케이션 정의 파일을 작성하면 됩니다. 예를 들어 direnv 전역 설정 파일 백업용으로 .mackup/direnv.cfg을 만들어봅니다.

[application]
name = direnv

[configuration_files]
.direnvrc

이제 .mackup.cfg 파일에 direnv를 추가해주고, mackup backup을 실행합니다.

$ mackup backup
Mackup needs a directory to store your configuration files
Do you want to create it now? </Users/nacyot/Dropbox/Mackup> <Yes|No>Yes
Backing up .direnvrc ...

새롭게 정의한 .direnvrc가 백업되는 것을 확인할 수 있습니다. mackup 애플리케이션을 백업 대상에 지정해두면, .mackup.cfg.mackup 디렉터리에 있는 내용도 백업을 해줘서 편리합니다. (시스템 별로 다른 설정 내용을 사용하고자 한다면 mackup 애플리케이션을 백업 대상에 포함해서는 안 됩니다.)

설정 파일 복원하기

이제 다른 컴퓨터에서 설정파일들을 복원하려면 다음 명령어를 실행합니다.

$ mackup restore

복원한 이후에는 드랍박스에 있는 내용을 링크해서 사용하기 때문에, 처음에 셋업한 컴퓨터나 새롭게 복원한 컴퓨터나 설정관리를 따로 해줄 필요는 없습니다.

파이썬(Python) 3.8 릴리스와 주요 변경 사항 - 할당표현식, 위치 한정 파라미터, f-문자열 평가식 지원

새소식, 2019-10-15 - 2019년 10월 15일에 파이썬 3.8이 출시되었습니다. 이 글에서는 파이썬 3.8에 추가된 기능과 바뀐 점을 알아보려 합니다.

파이콘 한국 2020, 코로나19 영향으로 온라인으로 개최할 예정

새소식, 2020-03-31 - 한국에서 열리는 가장 큰 오픈소스 커뮤니티 행사이자 개발자 행사인 파이콘 2020은 8월 13일부터 16일까지 코엑스에서 열릴 예정이었으나, 3월 30일 온라인 개최를 발표했습니다. 또한 펜실베니아에서 열릴 예정이었던 파이콘 US 2020도 취소를 발표했습니다.

AWS, EC2 예약 인스턴스와 세이빙스 플랜에 적용되는 가격 인하 발표

새소식, 2020-05-12 - AWS에서는 EC2 예약 인스턴스와 세이빙스 플랜에 적용되는 가격 인하를 발표했습니다. 인하폭은 리전 별로 다르며, 서울 리전의 경우 1년 약정시 C5 인스턴스가 7% 할인 되며, 3년 약정의 경우 M5 6%, C5 12%, R5 5% 요금 인하가 적용됩니다.