iSCSI + TimeMachine 改 その1

前にも書きましたが,TimeMachineをiSCSI経由でバックアップする試行の続き.

今までの経過を簡単に.

  • 自宅ネットワークだけでバックアップを走らせる
  • MacBookのスリープの復帰時にいろいろめんどくさい(略

なのでこんなスキームを立てた.

  • sleep時にTimeMachineを切って,iSCSIドライブをアンマウントする
  • 自宅ネットワークかを調べてiSCSIマウントとTimeMachineを走らせるスクリプトをcronにフックする

ということを考えている.

今回は前者をやります.

Sleepwatcherで自動実行

まずは下準備.

MacBookは基本,いちいちシャットダウンせずにスリープに入れる.

しかし,sleep時にフックアップを実行する術が備わっていない.

ので,sleepwatcherというsleepを監視してスクリプトを実行するプログラムを入れる.

簡単な使い方として,ホームディレクトリに".sleep"".wakeup"という

スクリプトを書いたファイルを入れておくと勝手に実行される.*1

Turn off the TimeMachine

昨日書いたスクリプトを改造するとこんな感じ.

tmOFF.scp

activate application "System Preferences"
tell application "System Events"
    tell process "System Preferences"
        click menu item "Show All Preferences" of menu 1 of menu bar item "View" of menu bar 1
        click button "Time Machine" of scroll area 1 of window "System Preferences"
        set X to button "OFF" of window "Time Machine" of application process "System Preferences" of application "System Events"
        if X = true then
        else
            click X
        end if
    end tell
end tell

これを実行用にtmOFF.appで保存しておく

とりあえず,これを"~/.sleep_dir"にでも移動しておく.

umount the disk for backup

バックアップ用ディスクをアンマウントするAppleScriptを以下に.

set X to "TimeMachine" -- target drive's name
tell application "Finder"
    try
        eject X
    end try
end tell

ん,"diskutil umount target"でアンマウントできるとおもったんだけど,

なぜかうまくいかない.理由はよくわからん.

で,これをumountTM.appとしてさっきのディレクトリに保存する.

~/.sleep

で,以下のような感じにスクリプトを書いておく.

.sleep

/usr/bin/osascript /Users/yourname/.sleep_dir/tmOFF.app
/usr/bin/osascript /Users/yourname/.sleep_dir/umountTM.app

で,最後にパーミッションを好みの感じに.

$ cd
$ chmod +x .sleep

ああ,いい加減なパーミッション設定ですね.個人用ですから...

これでおk.

チェック

では試してみましょう.

MacBookのフタを閉じると,スリープに入るんですが,入るまでに20から30秒ほどかかります.

なんか長くなった気がしますが,大丈夫でしょう.

そして,フタを開けると,iSCSIドライブがアンマウントされ,タイムマシンが切りになっているはずです.



次回は,cron用のスクリプトを書きます!

*1:実際はこれを/etc/rc.sleepかrc.wakeupが実行する.