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
コマンドでバックアップできます。
まとめ
低コストに復元・同期をすることができました。