奮闘中

QAエンジニアとして、2児のパパとして、一家を支える大黒柱として、日々奮闘中!

もしもに備えてMacをバックアップする

災害は忘れたころにやってくる、その時は突然訪れました。
いつものように、出社してMacbookを起動すると・・・

f:id:andysumi:20180601143856j:plain

Dockのアプリがすべて になっていて、PCを交換することに。。。
このような状態なので、データ移行も出来ず、0からセットアップしなければならず、かなりの時間を費やしました。

そこで、また明日やってくるかもしれない「もしも」に備えて、(出来るだけ)自動かつ低コストでMacをバックアップする方法をまとめました!

方針

  • アプリは、Homebrewで管理して、Brewfileをバックアップする
  • 設定ファイル等は、シンボリックリンクを設置して、実ファイルをバックアップする

バックアップというと、 Time Machine が簡単だと思いますが、別にHDDが必要なこともあり、会社でやるのは現実的ではないため、見送りました。

また、この方法だと、プライベート用、仕事用など複数のMacを使っていても環境を同期することが出来るのがメリットです。

バックアップ

バックアップ用ディレクトリを作って、そこにいろいろ突っ込んでいきます。
あとはそのディレクトリをDropBoxやGoogleDrive、Git等で同期しておけばOKです。

$ mkdir ~/backup

事前準備

Homebrewをインストールします。

$ usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
⋮
==> Installation successful!

$ brew doctor
Your system is ready to brew.

アプリ

Homebrewでアプリを管理するために、mas-cliHomebrew-Caskをインストールします。

# mas-cli
$ brew install mas

# Homebrew-Cask
$ brew tap caskroom/cask
$ brew tap caskroom/versions

Homebrewでインストールした パッケージ(アプリ)のリスト、Brewfile( ~/Brewfile )を作成します。
App Storeでインストールしたアプリは含まれます。

$ brew bundle dump --force

設定ファイル等

アプリの設定ファイル等は、実ファイルをバックアップ用ディレクトリに移動し、ファイルがあったディレクトリにシンボリックリンクを作成します。

# .configをbackupに移動
$ mv ~/.config ~/backup/.config

# 設定ファイルがあったディレクトリにシンボリックリンクを作成
$ ln -s ~/backup/.config ~/

ただ、アプリごとに都度この作業をするのは面倒くさいので、ツールに任せちゃいましょう。 Mackup は、この作業を簡単に実行できる便利なヤツです。

$ brew install mackup

ということで、Mackupに対応しているアプリの設定ファイルは、Mackupでバックアップします。
Dropbox等のクラウドストレージを使うことも出来ますが、今回は、いろいろまるっとバックアップしたいので、 file_system を使います。

# Mackupの設定ファイルを編集
$ vi ~/.mackup.cfg
[storage]
engine = file_system
path = backup
directory = Mackup

[applications_to_sync]
ssh
⋮

# 設定ファイルをバックアップ
$ mackup backup --force

定期実行

バックアップ作業を定期的に実行することで、常に最新の状態を保てるようにします。

launchdを使って、毎日19時に実行するように設定しています。

# 設定ファイル
$ vi ~/Library/LaunchAgents/backup.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>backup</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/Users/you/backup/backup.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>19</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

# 登録
$ launchctl load ~/Library/LaunchAgents/backup.plist

# 確認
$ launchctl list | grep backup

復元

バックアップしたフォルダを復元先のPCに設置します。

事前準備

バックアップと同様に、まずは、Homebrewをインストールしましょう。

アプリ

Brewfileからパッケージ(アプリ)をインストールします。

# Brewfileのシンボリックリンクを作成
$ ln -s ~/backup/Brewfile ~/

$ brew bundle

設定ファイル等

Mackupに対応しているアプリの設定ファイルは、Mackupで復元します。

$ mackup restore --force

Mackupに対応していないアプリの設定ファイル、その他ファイル・ディレクトリは、規定のディレクトリにシンボリックリンクを作成します。

最後に

ここまで、アプリと設定ファイル等については、最低限のバックアップ&復元が出来ました。

簡単ですね、お金かかりませんね、これでいつ「もしも」がやってきても大丈夫です!