2009年12月29日火曜日

自動で外部ディスクをバックアップ(同期)する on Mac

Time Machineを使えば出来るじゃん!って言われそうですが,僕の目的はサーバーのバックアップを内蔵ディスクに取ることなので,これはTime Machineでは出来ない(と思う).
まず,バックアップを取る方法ですが,rsyncを使います.
rsyncはファイルやフォルダの同期を簡単に行うことができるCUIアプリケーションです.
Mac OS Xでは,標準ですでにインストールされていると思います
(ターミナル.appでrsyncと入力してみよう.何かしらいろいろ表示されればインストール済み).
無かったら,インストールを頑張って下さい.

まず,バックアップしたい外部ディスク,ファイルサーバーをマウント.
これはFinderでも,何でもマウントすれば良い.
普通にUSB接続だったり,sambaだったりすれば,特に指定しなければ/Volumes以下にマウントされるはず.
仮に外部ディスクの名前がsenddiscだった場合,/Volumes/senddisc/以下に外部ディスクのファイルがあります
(確認するには「ls /Volumes/senddisc」とターミナルで入力).
ディスクの名前(senddisc)はFinderか,ディスクユーティリティ.appで変更できると思われます.
この中にある/Volumes/senddisc/senddirを/Users/hoge/backup/以下に同期したい場合,ターミナル.appで以下のように入力します.
rsync -avz --delete /Volumes/senddisc/sendir/ /Users/hoge/backup
--deleteっていうオプションで同期元で削除したファイルも同期先で削除します.
とりあえず,このコマンドでbackup以下にバックアップされると思います.

これを僕は自動でしたいと思いました.
つまり,「外部ディスクを接続」→「あら,バックアップが自動でとれてる!」ってことです.
この設定は,launchdを設定すれば良い.
lauchdとはサービス管理に使われている何とか,かんとかでよく分かりません.
設定ファイルはXML形式で書かれているらしいんだけど,どうやって編集すればいいんだよってことで,GUIで簡単にこれを設定できるLingonを使います.
まずはインストール.
ダウンロードページはこちら
リンクの最初にはLingon-1.2が最初に出てきますが,このバージョンは使いにくかったので,すぐ下のLingon-2.1.1.zipでインストールしました.
バージョンが違うとインターフェイスが違うので,この後の記事が分かりづらいかも.
ZIPファイルを解凍して,出てきたLingon.appを適当なフォルダに移す.
インストール完了だ!

Lingonを起動すると,現在,launchdに設定されているプロセスがサイドパネルに表示されます.
com.apple.xxxxxとか,良く分からない名前ですな.
ここで,「MY AGENTS」,「USERS AGENTS」,「USERS DAEMONS」とあるのですが,よく分からない.
多分,新たに追加する場合は「MY AGENTS」に追加すれば良い.
ツールバーの「New」を押せば,新たなサービスが追加できる.
「New」を押して「My Agents」を選択,「Create」を押すと,1(Name),2(What),3(When)とステップ毎に分けられた編集画面が出てくる.
まず,1(Name)ですが,こんな感じで適当につけました.
abc.hoge.SenddirBackup
次に2(What)ですが,さっきのrsyncのコマンドを入れます.
rsync -avz --delete /Volumes/senddisc/sendir/ /Users/hoge/backup
3(When)は「Run it every time a volume is mounted」を選択します.
意訳すると,「ボリュームを挿した(マウントした)ときに起動するぜ」ってことです.
これをちゃんと保存すれば出来るはずです.
再ログイン後,有効になります.
確認は,再ログイン後に適当に同期元のファイルを変更して,ボリュームをマウントし直せば同期されているはずです.

最後に注意ですが,複数のボリューム名が一緒だと,これを区別できないので,思わぬところで,上書きされてしまう恐れがあります.
全部のボリュームの名前は変えておきましょう.


番外として,Lingonを使って,壁紙をスクリーンセーバーにする.
  1. Name,sys.hoge.ScreensaverDesktop
  2. What,/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background
  3. When,Run it when it is loaded by the system (at startup or login)
非常におしゃれですね.

0 件のコメント:

コメントを投稿