自動同期MacでWebDAVサーバに自動バックアップする方法MacでWebDAVサーバに自動バックアップする方法を考えて見ました。どんなWebDAVサーバに対してもできるので、自宅サーバやVPSにWebDAVサーバを建てて使うことができますが、ここでは弊社、JUSTPLAYERが誇る高速WebDAVストレージクラウドでもある、Teraクラウドでテストしてみました。※2015年1月4日現在、Teraクラウドでは、100G無料キャンペーンをやっているので、やってみたい方はチケットゲットして100G無料貰ってHOMEをバックアップしても良いかもしれません。プログラムは、先日紹介したWebDAV-Syncを使います。わかる人には先日の記事だけで自動同期ができますが、OSXならではのlaunchdを使って、ちょっとエレガントにインストールしてみます。WebDAV-syncのconfig作成コマンドラインからWebDAV-syncが動くようにせねばなりません。最初に、WebDAV-Syncをダウンロードします。最新版のjarファイルをダウンロードしたら、次の様に実行します。directory)無事、ヘルプが出てきています。次に、launchctl用のファイルや、同期用のconfigファイル一式をアーカイブしたものをtarで固めておいたので、これをダウンロードします。jp.teracloud.webdav-sync1_1_4_jp1.tar.bz2このファイルは、自分のHOMEから展開します。~/Downloads/jp.teracloud.webdav-sync1_1_4_jp1.tar.bz2すると、次の様なファイルが展開されます。Support/jp.teracloud.webdav-sync/webdav_sync1_1_4_jp1.jarここに、先ほどダウンロードした、webdav_sync1_1_4.jarをコピーします。Support/jp.teracloud.webdav-sync/webdav_sync.plistという名前で、セーブします。次の様なファイルになっているので、日本語の箇所を自分のもの、自分のサーバに書き換えます。下記の例では、Documentsをバックアップすることになっています。複数列挙したい場合は、<sync>〜</sync>を複数羅列するとうまくいくでしょう。</sync></config>ここで動作テストをかねて、最初の同期をしてみます。テストは途中で止めても良いのですが、最初の1発目の同期なので一気に最後までやってしまった方が良いでしょう。データ容量に見合う、太く従量制ではない回線を用意して下さい。Support/jp.teracloud.webdav-sync/webdav_sync.plist〜ログはファイルがいっぱい出てくるだけなので割愛〜最後まで動いたことを確認し、プロセスが終了したことも確認しておきます。launchdで常駐させるここまでできたら、自動的に実行するだけです。launchdを使って同期させます。利用したい一般ユーザで行います。~/Library/LaunchAgents/jp.teracloud.webdav-sync.plist何も出てきませんが、これで自動実行が開始しています。次のようにすると、実際に動作する過程が見れるはずです。~/Library/Logs/jp.teracloud.webdav-sync.err※このtailは、いつでもctrl+cで止めて構いません。launchctlに登録していることを確認したいときは、下記の様にタイプします。sudoしてはいけません。teracloud-0jp.teracloud.webdav-sync次に、jp.teracloud.webdav-syncサービスを起動する方法です。jp.teracloud.webdav-syncすると、次の様に起動されます。jp.teracloud.webdav-sync実際にプログラムが起動してるかどうかは、下記の様に確認できます。Support/jp.teracloud.webdav-sync/webdav_sync.plistlaunchdのマニフェスト~/Library/LaunchAgents/jp.teracloud.webdav-sync.plistは、次の様に書かれています。<key>KeepAlive</key><true/></dict></plist>※このplistの書き方は、下記のコマンドで詳しく調べることができます。modeとして実行しています。webdav_syncは決して軽いプログラムではないので時間に1度ぐらいにしても良いかも知れませんね。TimeMachineは、1時間に1度ぐらいしかコピーしませんしね。ファイルのリストア方法1つ1つのファイルが壊れてしまった時等、個別にバックアップから復元する必要がある場合は、なんらかのWebDAVのクライアント(例:CyberduckやTransmitなど)を使うことで、ファイルの取り出しができるでしょう。Teraクラウドを利用している場合は、誤って削除されてしまった状態で同期されてしまった場合でも、サーバ側でスナップショットを残すので、Webからログインしてスナップショットから救出をすれば、1日以内なら3時間ごと、1週間以内なら1日ごとでデータの救出ができます。マシンがクラッシュした時など、まるまるリストアしたいときは、次の様にすればリストアができるでしょう。~/Documents/もちろん先に~/Documentsではなく、別のフォルダにダウンロードしておき、必要な物だけコピーすることもできます。その他のこと・・・このwebdav-syncは、1つのインスタンスしか実行できないようです。したがってwebdav-syncをlaunchdで実行しているときは、他の用途でwebdav-syncを使えません。ちなみに、起動中のインスタンスがあると、何も言わずすぐに終了します。これがまた、なんで動かなくなったのかわからなくて、結構焦ります(笑)。webdav-syncは、問題があると「IOException」をだしてすぐに止まる設計思想?のようです。ファイル名に特殊キャラクタがあったり、ファイル名の長さだったり、様々な理由でサーバから正しくお断り(403:Forbidden)されると、IOExceptionしてプログラムが停止し、その先のファイルコピーを完全に諦めてしまいます。これではバックアップ用途には都合が悪いので、そのファイルのアップロードにはWarningをだして諦め、先に進むようにパッチを当てました。実は配布アーカイブにいれてあります。この意外にも、「別のwebdav-syncがロックしているので動かない」ときのエラーメッセージなど、気になるIOExceptionを拾うようにしておきました。パッチ版を利用するには次のようにします。webdav_sync.jarwebdav_syncは双方向同期機能があるようです。webdav_sync.jarは私のプログラムではないので、正直、どういうメカニズムで動いてるか確認していません。双方向同期はリスクがかならずつきまとうので、有効にする方はご注意を。~/Library/Logs/jp.teracloud.webdav-sync.errを使って確認する程度で、WebDAVサーバにバックアップしてることを確認でき、とても便利です。WebDAVサーバなら、スマフォやタブレットに沢山のクライアントがあるので、そこから好きなものを使えばデータの閲覧も容易です。Teraクラウドならば、これ以外にもファイル単位のデータの公開など、様々な機能がありますので、WebDAVサーバを自分用に作るのはちょっとしんどいなぁ・・・なんて思う方は、是非、Teraクラウドのアカウントを作ってみてくださいね。