rcmdnk's blog

2 x 2 x 8.5 CM ( 0.78 " x0.78 x3.34」)長方形クラフト紙ギフトボックスMerchandiseリップスティックTobe MackupショッピングFavorパッケージボックス化粧品クラフトEssential Oilボトルストレージボックス 2x2x8.5cm (0.78"x0.78"x3.34") ブラック

新しいMacを手に入れて色々設定してましたが、 その際に mackup を使ってアプリの設定等を移行したら結構便利だったのでそれについて。

Sponsored Links

mackup

mackupはmacOSでアプリの設定ファイルなどを他のマシンと共有することなどを 目的にしたコマンドです。

インストールはHomebrewで

$ brew install mackup

またはpipでもインストールできます。

$ pip install --upgrade mackup

使い方は

$ mackup backup

とすることでアプリの設定ファイルなどが指定の場所にコピーされ、 元の場所にはシンボリックリンクが作られます。

例えばBetterTouchToolとかだと

  • ~Library/Preferences/com.hegenberg.BetterTouchTool.plist
  • ~Library/Application Support/BetterTouchTool/btt_data_store.v2-shm
  • ~Library/Application Support/BetterTouchTool/btt_data_store.v2
  • ~Library/Application Support/BetterTouchTool/btt_data_store.v2-wal
  • ~Library/Application Support/BetterTouchTool/bttdata2

といったファイルがコピーされます。

$ mackup uninstall

とするとシンボリックリンクが削除され、コピーされたファイルが元の位置にコピーされます。 この際も一度コピーしたものは残るのでこれをバックアップとして使ったりすることも可能です。

コピーされたファイルを他のマシンに持っていって、

$ mackup restore

を行うとこれらのファイルへのシンボリックリンクが各アプリの設定場所に作られるので 設定の移行ができることになります。

デフォルトではDropboxのトップディレクトリにMackupというディレクトリを作って これらのコピーを入れるようになります。

なのでそのままDropboxで同期することで他のマシンと設定を常にSyncする、というのがこのコマンドの基本的な思想です。

場所を変えるには~/.mackup.cfgという設定ファイルを作って

[storage]
engine = file_system
path = Documents
directory = Mackup

みたいな設定を書きます。これで~/Documents/Mackupがトップディレクトリになります。

Configuration

最初これ便利だな、と思って使い始めたんですが、 アプリの中には常時設定ファイルを書き換え続ける様なものもあって、 それのせいでDropboxが常に同期実行中状態になりました。

ちょっとやり過ぎ感があるのでそういったアプリがある場合には 置く場所はDropbox以外にしたほうが良いと思います。

設定ファイルには、[storage]以外に、 [applications_to_sync][applications_to_ignore]という項目が書けて、 名前の通りmackupで扱うアプリを指定したり、除外アプリを指定することが出来ます。

何も書かないとすべての可能なアプリを扱うことになり、 applications_to_syncがあればそれだけ、 applications_to_ignoreがあればそのアプリは除外されます。

対応しているアプリは

$ mackup list

で見ることが出来ます。bettertouchtoolkarabinerといったものから、 bashvimzshといったものもあってこれらは HOMEにある~/.bashrcなどをコピーする事になります。

使ってるアプリで入ってないものがあるかもしれませんが、 対応アプリは今でもどんどん追加されてる感じですし、 必要なら自分でPull Requestを出しても良いと思います。

Karabinerなど一部のファイルを新規作成してしまうアプリについて

Karabinerなどの一部のアプリは、設定ファイルを更新する際、 新規ファイルを作って置き換える様な作業をします。

これをされるとシンボリックリンクが切れるので常時同期状態を作ることは難しくなります。

ちょっとどれがそういった動きをするか確認してませんし、確認するの結構面倒ですが リンクを使って管理したい場合にはちょっと注意が必要です。

dotfilesなどを使ってるときの注意

dotfiles.bashrcなどを管理して、さらに別の場所にインストールしてシンボリックリンクを貼る、 みたいな設定をしてる場合にはちょっと注意が必要で、 mackupをしてしまうと一度mackupのシンボリックになり、uninstallすると 実体そのものが~/.bashrcに作られるので元のdotfilesとのリンクが切れてしまいます。

なので安易にmackup backupしないで ちゃんと 必要なものだけapplications_to_syncで指定するか

[applications_to_ignore]
bash
vim
zsh

などとdotfilesで管理しているものをちゃんと除外しておく必要があります。

mackupを使って新しいMacへ設定を移行する

mackupの設定ファイルはこんな感じ。

dotfiles/.mackup.cfg at master · rcmdnk/dotfiles

~/tmpに一時的にMackupディレクトリを作ってコピーを作ります。

applications_to_syncを指定してるので applications_to_ignoreは意味ないのですが とりあえずdotfilesで扱ってるものを明示するために書いてある感じです。

この設定を使って、まず古いMacで

$ mackup backup
$ mackup uninstall

を行います。すぐにuninstallするのはこのバックアップディレクトリが一時的なもので 面倒なことにならないようにするため戻しています。

これで~/tmp/Mackupができるので、これを新しいMacにコピー。

新しいMac側ではHomebrewでのインストールとかアプリのインストールとかを一通り行います。 (アプリを後から入れると設定ファイルとかが新規上書きされる可能性があるものもあるので なるべく先に全部入れる。)

Mackupディレクトリをコピーしてきて~/tmp/Mackupに置きます。

そして

$ mackup restore
$ mackup uninstall

これで通常のファイルが各設定ファイルの場所に置かれることになります。

これで必要なアプリの設定だけきれいに新しいMacに移行することが出来ます。

macOS機能の移行ツールなどもありますが マシンが色々変わった際には余計なものは一度クリーンにしたい、ということもあるので 必要なものをきっちりと確認して移行できるこの方法は 結構簡単ですし良いと思います。

~/Documentsとかの下にMackupを作ってuninstallしないで そのままにしておく、というのも場合によっては良いかもしれません。

その場合には上に書いたようなファイルを新規作成してしまうアプリをきちんと 確認する必要はあると思いますが。

Sponsored Links
Sponsored Links

« Touch Bar付きMacBook Proを買ったのでまずは触ってみての感想 Touch Bar付きmacOS High Sierraの設定 »