自宅に居るときだけスクリプトを動作させる

さて、先日sitecopyで同期する方法を実装した訳ですが…

sitecopyを使ったサイトの同期 - ksworks.org
ちょっと前にレンタルサーバのデータ消失事件などがありましたが… 自前でサーバを運用でもしていないかぎり、やはりそこは生命線(^_^;)   いざという時の為の備えはやはり必要だよね、と思うわけです。

そもそも自分が使ってるメインのPCであるMBAは、自宅の外にも持ち歩いて作業している事がある…

外出時の回線状況では、使いたく無い場合というのが大半になります(^_^;)

なので、自宅に居るときだけ同期するようにしてみました。

まずはインタフェース名を調べます。

自宅でThunderbolt Displayに接続している時のインタフェースは…

$ ifconfig | egrep '^[a-z]'
lo0: flags=8049 mtu 16384
gif0: flags=8010 mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8823 mtu 1500
p2p0: flags=8802 mtu 2304
fw0: flags=8863 mtu 4078
en4: flags=8863 mtu 1500

 

で、そこから接続を外した状態でチェックしてみます。

$ ifconfig | egrep '^[a-z]'
lo0: flags=8049 mtu 16384
gif0: flags=8010 mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8823 mtu 1500
p2p0: flags=8802 mtu 2304

fw0/en4辺りがインタフェースのデバイス名で使えそうです。

 

そして、明らかに名前からして en4 がネット回線なので、これを利用しますw

#!/bin/sh
#
# sitebackup.sh - Download site (sitecopy)
#
# Required: sitecopy, growlnotify
#
# Authors:: Ken AKASHI 
# Version:: 2012-07-14
# License:: NYSL Version 0.9982
# Copyright:: Copyright (C) ksworks, 2012. All rights reserved.

# 自宅などの固定回線のある環境で使用するインタフェース名
INTERFACE=en4

# 自宅の環境で有効なインタフェースがあればコピーする
if /sbin/ifconfig $INTERFACE > /dev/null 2>&1
then
    /usr/local/bin/growlnotify -t "sitebackup" -m "sitecopy start..."
    /opt/local/bin/sitecopy -af # Fetch
    /opt/local/bin/sitecopy -as # Sync
    /usr/local/bin/growlnotify -t "sitebackup" -m "sitecopy fetch & sync done."
fi
exit 0;

ということで、こんなスクリプトを作成してcron登録することに( ´ ▽ ` )ノ

動作してるのかしてないのか、その辺りを把握したいということもあり、実際に実行する前後にgrowlnotifyを追加してみたり。

これで、実は裏でsitecopyが動いてるのにシャットダウンしてしまった!などの誤操作が防げるはず!

 

$ crontab -l | grep site
30 21 * * * ~/bin/sitebackup.sh > /dev/null

crontabの登録内容もだいぶスッキリしましたw

# crontabの登録をスクリプトにしておくことにより、今後のメンテで他に作業を追加するなどもやりやすくなった訳です