Macの環境構築の同期・復元をかんたんにする


2020/01/19 Update: 整理しました

はじめに

Macの環境を以前のものに復元するためにはconfigファイルを新環境になんらかの形で構築し直す必要があります。
本記事では低コストに環境構築を復元/同期/バックアップができるmackupというツールを紹介します。

mackupは指定したファイルを特定のディレクトリに移動させ、そこからもとのファイルの位置にシンボリックリンクを簡単に作ることができるツールです。
そして特定のディレクトリにクラウドストレージを指定することでMac間の環境の同期を実現することができます。

インストール編

はじめにmackupをインストールします

$ brew install mackup

設定編

mackupを使うには、バックアップ先やバックアップするアプリケーションを指定するための設定ファイルを作成する必要があります。
デフォルトの設定ファイルは、~/.mackup.cfgに保存します。

例えば、バックアップ先をGoogleDriveの設定し、特定のアプリケーションのファイルをバックアップする場合以下の様になります。。
アプリケーションごとにどのファイルがバックアップされるかはmackup/applicationsを参考にしてください

[storage]
engine = google_drive
directory = Dotfiles

[applications_to_sync]
fish
fisherman
git
neovim
mackup
ssh
tmux

またバックアップ先にはクラウドストレージのみではなく、特定のディレクトリも指定できます。
これにより、クラウドストレージをのみではなく、Gitのレポジトリに対してバックアップをすることが可能です。私の場合、はじめはクラウドストレージを使って同期をしたいたのですが、不安定で同期されなかったりいつのまにか競合しているといった事象に出くわしたのでGitのレポジトリを通して同期させることにしています。。

[storage]
engine = file_system
path = <some/folder/in/your/home>

バックアップ編

configファイルを作成したら以下のコマンドでバックアップします

$ mackup backup

実行すると指定したディレクトリにもとのファイルがシンボリックリンクとなり、特定のディレクトリにファイル本体が移動されます。

リストア編

リストアは以下のコマンドで実現できます。
新規の環境に移った場合、mackup.cfgがないため最初にlnコマンドで.mackup.cfgのシンボリックリンクを作ると楽です。

$ mackup restore

オリジナルバックアップ編

mackupが用意していないコンフィグファイルをバックアップする方法を紹介します。

ここでは、brewfileをバックアップしてみます。

# 出力先に.brewfileを指定する
# brewでインストールしているパッケージを書き出す
$ brew bundle dump --file=.brewfile

mackupで管理するために.mackupディレクトリを作成し設定ファイルを書きます

$ mkdir ~/.mackup
$ vim .mackup/my-brewfile.cfg
[application]
name = My Brewfile

[configuration_files]
.brewfile

次に、.mackup.cfgにファイル名を追記します

[storage]
engine = file_system
path = src/github.com/mkazutaka/dotfiles

[applications_to_sync]
...
my-brewfile

以上で完了です。mackup backupコマンドでバックアップできます。

まとめ

低コストに復元・同期をすることができました。