Temporarily disabling Mac OS Time Machine.
今日は小ネタです。(ここ数日、いろいろ長い記事を書きまくったので。)
Mac OS を使っている方は、Time Machine という機能を御存知かと思います。
定期的に、ディスクのバックアップをしてくれるツールですね。
もしかすると最近のバージョンの Mac OS ではいろいろ改善されているのかも知れませんが、Time Machine は、いろいろと痒いところに手が届かないツールでもあります。たとえば、バックアップのスケジュールを指定できないとか、バックアップしたデータをリストアするのに専用のコマンドが必要だったりとか。
そのための代替ツールとして、rsync-time-machine とか、既存の Time Machine を補助するツールとかいろいろ公開されてます。前者は、私が VMware Fusion の仮想マシンをバックアップするのに活用しています。Time Machine だとうまくコンパクトにバックアップできないんですよね。
今日は、そんな複雑な話ではない、小ネタです。(なんでこんなこと書いているかと言うと、xz コマンドが終了するまで、まだあと 2時間ほどかかりそうだからです。 🙂 )
こんなときにバックアップ始めるんじゃない〜!!
Mac OS を使っていると、「おいおい、こんなときにバックアップ始めるんじゃないよ!」と思うことはありませんか?
- tar コマンドや xz で、でかいファイルのアーカイブ中
- 仕事で急ぎのプロジェクトをビルド中
- git clone ででかいプロジェクトを取得中
ちなみに、そのようなとき、同様に OS がスリープしたりすると、さらに腹立たしいですよね。
Mac OS には caffeinate というコマンドがあって、あるプロセスが実行中に OS をスリープさせないようにできます。たとえば、時間のかかるコマンド hogehoge を実行するときには、
$ caffeinate hogehoge
とすると、hogehoge コマンドが終了するまで OS のスリープを防いでくれます。しかし大抵、コマンドを実行してからそういうことに気づくものです。例えば、あるファイル foo.tar を xz で圧縮し始めてから、「あ、その間に昼飯でも食いにいくかな」ということはよくあるものです。そんなときは、caffeinate コマンドの -w オプションを利用できます。
いま、xz コマンドのプロセス ID が 1234 だとしたとき(ps コマンドで PID を確認してください)、
$ caffeinate -w 1234
と実行すると、xz コマンドが終了するまで OS をスリープさせません。
ようやく本題に戻ります。問題は、OS がスリープしないのはいいのですが、その間に Time Machine のバックアップが始まってしまうことがあることです。た、頼むから、巨大なファイル foo.tar と foo.tar.xz(圧縮中)があるときにバックアップなんか始めないでくれ〜。
そんなときは、こうします。まず、Time Machine を停止します。
$ sudo tmutil disable
これは、GUI「システム環境設定」を使っても良いですね。次に、caffeinate -w を実行する訳ですが、だいたい、後で Time Machine を再度有効にするのを忘れてしまうものです。そこで、次のようにします。
$ caffeinate -w 1234; sudo tmutil enable
これで、Time Machine は自動的に再有効化されます。
なーんだ、それだけか。。。と思われるでしょうが、甘いです。これだと、tmutil コマンドは sudo で実行することになるので、後でパスワードを聞いてきてしまうんですね。たぶん、xz コマンドが終了した頃にはそんなことを忘れていて、ターミナル(シェル)を quit(exit) してしまうことでしょう。
tmutil コマンドをパスワード無しで実行するにはどうしたら良いか? 答えは簡単で、sudo の sudoers ファイルを編集すれば良いのです。私の Mac OS El Capitan の場合ですと、visudo コマンドを使って(sudo visudo)、sudoers ファイルの末尾に以下を追加します。yokoyama は、私のユーザー名です。tmutil コマンドだけでなく、ついでに pmset コマンドもパスワード無しで実行できるようにしておきましょう。
yokoyama ALL=(ALL) NOPASSWD: /usr/bin/pmset, /usr/bin/tmutil
簡単ですね。もちろん、これらのコマンドをパスワード無しで実行できるようになりますので、いちおう、セキュリティには御注意ください。
今日の小ネタはここまで。