熱暴走のきろく。

自分の興味があることに関して書いていきます。主にPC関連、特にソニー。

MacBook Airで朝何も考えずTimeMachine用のHDDを引っこ抜いても大丈夫なようにする

お久しぶりです。

普段MacBook Airを持ち歩いているのですが、バックアップもしっかり取りたいので、家にいるときはUSB接続の外付けHDDを繋げています。

TimeMachineで定期的にバックアップが行われるので繋いでおくだけというのは楽なのですが、朝寝ぼけた状態でMacのパスワードを入力しディスクをアンマウントしてUSBケーブルを取り外し、とカバンに放り込むまでの手順が長く、うっかりしているとアンマウント動作をせずに引っこ抜いてしまいそうになります。

 

そこで、macOSに標準でインストールされているAutomatorシェルスクリプトを組んで毎朝特定の時間に自動でアンマウントするようにしました。

また、外に持ち出さない日もあるため、自動でマウントする設定も行います。

今回は午前5時にアンマウント、正午にマウント、としました。

これで朝8時頃に簡単にMacを持ち出すことができます。まあ、スリープにしてあるとちゃんとアンマウントされているのかわからないので、僕は一度開くようにしています。ロックは解除しなくても、通知が表示されるので以前よりは断然楽になりましたよ。

 

f:id:netsubousou:20161109013647p:plain

まずMacの状況を確認します。

ターミナルで以下のコマンドを入力します。

diskutil list

バックアップ用の外付けHDDは /dev/disk2 と示されています。TimeMachine用にすべての領域を使っており、パーティションは 2 のようです。

そのため、マウントするディスクイメージは disk2s2 となります。

 

次にAutomatorで「カレンダーアラーム」を選択し、「ユーティリティ」カテゴリから「シェルスクリプトを実行」をワークフローにドラッグアンドドロップします。

あとは、シェルスクリプトを書くだけ。

if diskutil list | grep '/dev/disk2'

then

  diskutil mount disk2s2

else

  :

fi

 アンマウントする設定の場合は「mount」が「unmount」になります。

このとき、ただマウントするコマンドだけ書いてしまうと、外出先で正午になったときに、アンマウントのシェルスクリプトを実行しようとして「disk2s2」が見つけられずエラーを吐いてしまいます。

外出先で午前5時を過ぎた場合も同様です。

エラーが表示されるだけなので気にならない方はそれでも構いませんが、かっこ悪いので diskutil list コマンドで一覧を表示した中に disk2 があるかどうかを grep し、if文で動作を分けています。

 

あとはカレンダーに登録して完了。そうそう、毎日繰り返すように設定することを忘れずに。

 

参考にしました

if文でコマンド実行結果の戻り値を判定する - 四角革命前夜

何もしない組み込みコマンド ":" (コロン)の使い道 - Qiita

grepコマンドの覚え書き - 試験運用中なLinux備忘録