Macリテラシ ~ バックアップ

前置き

Macのバックアップといえば、Time Machineです。この記事では、Time Machineを使って、Linuxサーバ上のsambaドライブへバックアップする方法を説明します。

Linuxのsambaドライブじゃなくても、例えばWindowsの共有フォルダでも、おそらく同じ手順でいけると思います。

本文

環境

以下、私の環境です。

Mac
  • MacBook Air(Mid 2012)
  • OS X 10.8.2(Mountain Lion)
  • コンピュータ名はcuneiform
Linux
  • ホスト名はgenpon
  • sambaドライブとしてsmb://genpon/sharedを公開

作戦

  • 仮想ディスクを作り、sambaドライブ上に置く
  • その仮想ディスクをTime Machineのバックアップ先に指定する
  • Mac起動時にsambaドライブと仮想ディスクをマウントするよう、スクリプトを仕込む

仮想ディスクイメージ

Time Machineは、バックアップ先としてディスクを要求します(フォルダではダメ)。仮想ディスクイメージは、ファイルを仮想的なディスクと見なすための仕組みですが、これならTime Machineのバックアップ先として使えます。

仮想ディスクイメージを作るには、ディスクユーティリティアプリを使います。起動して「新規イメージ」を選択し、下図のように入力して下さい。

仮想ディスク作成

以下、注意点です。

  • 名前は適当で構いません(2カ所とも)
  • サイズは大きめ(内蔵ディスクの空き容量より大きくてもOKです)
  • ただし、サイズを指定する前に、イメージフォーマットに「スパースバンドル」を指定すること
  • 作成した仮想ディスクは自動的にマウントされてしまうので、一旦「取り出し」ておくこと(下図参照)

取り出し

sambaドライブをマウントし、仮想ディスクを移動

sambaドライブ smb://genpon/shared をマウントする手順は以下の通りです。

  • Finderのメニューから「移動」→「サーバへ接続」を選ぶ
  • サーバアドレスに smb://genpon/ を入力する
  • マウントするボリュームを聞かれるので、shared を選ぶ

成功したら、さきほど作成した仮想ディスクイメージをsambaドライブの適当なフォルダへ移動します。私の場合は、shared/backup/cuneiform/ の下に置きました。

移動したら、仮想ディスクイメージをダブルクリックしてマウントしておいて下さい。成功すると、デスクトップに"aTimeMachine"というディスクが表示されると思います(環境設定によっては表示されないかも)。

Time Machineのセットアップ

マウントしたsambaドライブ上の仮想ディスクをTime Machineのバックアップ先として選択するため、ターミナルアプリを起動して、下記のコマンドを入力します。tmutilは、文字通り、Time Machine用のユーティリティコマンドです。

cuneiform:~ maru$ sudo tmutil setdestination /Volumes/aTimeMachine/

これで、Time Machineが動くようになったと思います。試してみるには、メニューバーのTime Machineアイコンをクリックし、「今すぐバックアップを作成」を選びます。初回のバックアップは、かなり時間がかかる(数時間とか)ので覚悟して下さい。

もし、Time Machineが仮想ディスクを見つけてくれない場合は、以下のコマンドを入力してから、あらためて上記のtmutilコマンドを打ってみて下さい。

cuneiform:~ maru$ sudo defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

defaultsコマンドは、Macのデフォルト設定を参照・変更するコマンドです。上記のコマンドにより、Time Machineがネットワーク上のディスクをバックアップ先対象と見なしてくれるようになるらしいですが、私のMacでは効果がよく分かりませんでした。

マウントスクリプト

Macを起動するたびにsambaドライブや仮想ディスクをマウントするのは面倒なので、AppleScriptを使って自動化しておきましょう。余談ですが、ググッてみると、仮想ディスクイメージのファイル名をcuneiform_aabbccddeeff(後半はNICのMACアドレス)のようにしておけば、Time Machineが自動的にマウントしてくれる、という情報もあったのですが、私の環境ではうまくいきませんでした。

AppleScriptエディタを起動して、以下のスクリプトを入力します。

delay 10 --10秒くらい待てばWiFiの準備も終わってるはず。

if not online() then --ネットが無い環境にいるなら何もせずに終わる。
	return
end if

mountall()
return

--オンラインかどうかを調べる。
on online()
	try
		--適当な(実在する)URLオブジェクトを作る。
		--もしオンラインならDNS経由でIPアドレスも得られるはず。
		--もしオフラインなら例外が発生する。
		set u to "http://www.apple.com" as URL
		set n to dotted decimal form of host of u
		return true
	end try
	return false
end online

--Sambaドライブや、TimeMachine用のディスクイメージをマウントする。
on mountall()
	tell application "Finder"
		mount volume "smb://genpon/shared"
	end tell
	
	delay 5
	do shell script "hdiutil mount /Volumes/shared/backup/cuneiform/timeMachineDisk.sparsebundle"
end mountall

2箇所にdelayが入ってますが、環境によっては、待ち時間(秒単位で指定)のチューンが必要でしょう。

これを適当な名前で保存します。ファイルフォーマットには、「アプリケーション」を指定します。

スクリプト保存

最後に、保存したスクリプトがMac起動時に実行されるよう、システム環境設定の「ユーザとグループ」にある「ログイン項目」にスクリプトファイルを追加して下さい。

課題

スクリプトが原因かどうか分かりませんが、たまに、Mac起動後に、メニューバーが出ないことがあります。そんな場合でも、ショートカットキー(option+F1とか)でシステム環境設定などを起動するとメニューバーが出るようです。

Last modified:2012/12/15 00:28:39
Keyword(s):
References:[Macリテラシ]
This page is frozen.