DirSync Pro 1.4.x—part 3:各種設定

DirSync Proを起動するとJobsetの表示画面が開きます(初期設定のオプションを全て表示しています)。
ここでは、バックアップ/同期の設定を表示する画面ですが、設定は「Job」項目をダブルクリックで開いたウィンドウで行います。
アプリケーションのメインウィンドウでバックアップ/同期の設定を行えると分かりやすいのですが、もう1枚ウィンドウを開かないといけないというインターフェースが、DirSync Proを面倒で分かりにくく感じさせている大きな要因なのでしょう。

1

先ず、ソースとバックアップ先を指定します。
図のソースとバックアップ先のパス指定フィールドにそれぞれのフォルダを指定します。現行の安定版のバージョン1.4.6までは、パス指定フィールド右のフォルダアイコンをクリックしてJavaベースのオープンダイアログからそれぞれのフォルダを選択するといった方法でした。ところが、プレリリースバージョン1.4.7a8では、このパス指定フィールドへ対象のフォルダを直接ドロップできるようになっています。また、フォルダアイコンをクリックしてから開くオープンダイアログ内でも、対象フォルダのドロップが有効になっています。
オープンダイアログ内で階層を移動することが、DirSync Proの操作の中で一番厄介な部分だったので、この改良は大きな進展です。

1-2

■カスタム設定
通常はプリセットの同期モード(sync mode)から選択することでバックアップ設定はOKでしょう。除外項目などがある場合は、カスタム設定でオプションを選択することになります。DirSync Proの特徴は機能の豊富さと、それらの多くをカスタム設定のGUIを使ってチェックボックスのON/OFFで設定出来ることでしょう。記述しなければならないのは、パターンマッチでの指定部分くらいで、Exclude設定などでは殆どピックアップダイアログでのクリック設定で済みます。ただ項目が多い分だけ煩雑感は拭えないのですが、これをrsyncのスクリプトでやることを考えれば、どちらを選択するかは分かりきっています。

2

3

5

■DirSync Proで出来ないこと
Javaベースのアプリケーションとなっていますので、

  • AppleScriptやAutomatorからのリモートが出来ないので、簡単にワークフローに組み込めない。
  • ネットワークボリュームへのアクセスを、DirSync Pro側で記述出来ない

などの制限はあります。
ただ、かなりの複合条件のオプション付きで同期・バックアップが出来るという意味で試してみる価値はあると思います。

DirSync Pro 1.4.x—part 2;ネットワークボリュームのマウントとDirSync Proの起動

■DirSync Proのカスタム設定を始める前に準備したこと
今回DirSync Proで試したい同期は、ローカルボリュームではなく、ネットワークを介したボリューム上のディレクトリ間同期です。
バックアップツールには、同期の前と後の処理を組み込めるものがいくつかあって、DirSync Proも前処理でネットワークボリュームをマウントするスクリプトを起動できるといいのですが、残念ながら前/後処理機能を持っていません。スケジュール機能はあるのですが…
そこで、AutomatorでネットワークボリュームのマウントとDirSync Proの起動を行うことにしました。

131121

図の上と下のアクション設定は同じ動作をそれぞれで設定したものなので、実際には、どちらか1つでOKです。
シェルコマンドでは、先ず‘mkdir /Volumes/VolumeName’でマウントポイントを先に設定しなければなりませんが、AppleScriptではこの部分を省略できます。
それぞれのスクリプトを記しておきます。

mount volume "smb://xxxx-MacBookPro.local/VolumeName" as user name "YourAccount" with password "pasword"
tell application "Finder"
	open ("/Volumes/VolumeName" as POSIX file)
	open "/Users/YourAccount/xxxxxx/DirSyncPro-1.47a8-OSX/dirsyncpro.jar" as POSIX file
end tell

シェルコマンドでは、

mkdir /Volumes/VolumeName
mount -t smbfs //YourAccount:pasword@xxxx-MacBookPro.local/VolumeName /Volumes/VolumeName
open /Users/YourAccount/xxxxxx/DirSyncPro-1.47a8-OSX/dirsyncpro.jar

SMBでの接続をAFPで行う場合は、

mkdir /Volumes/VolumeName
mount_afp “afp://YourAccount:pasword@xxxx-MacBookPro.local/VolumeName” /Volumes/VolumeName
open /Users/YourAccount/xxxxxx/DirSyncPro-1.47a8-OSX/dirsyncpro.jar

とすればいいでしょう。
DirSync Proの起動は、それぞれの‘open’コマンドで‘dirsyncpro.jar’を指定すればOKです。
残念なことは、‘dirsyncpro.jar’がアプリケーションとしては認識されないため、‘dirsyncpro.jar’でバックアップ設定ファイル「.dsc」ファイルを開くというスクリプトが書けないことです。起動時に併せて設定ファイルまで開ければいいのですが、この辺りがJavaベースのアプリケーションの制約なのでしょう。

DirSync Pro 1.4.x—part 1

DirSync Pro<http://www.dirsyncpro.org>を使い始めたきっかけは、OS X 10.5-6くらいの時期に、当時のレスポンスのあまり良くないNASに、10ユーザくらいのバックアップをrsync2.xを使って、crontabで夜中に稼働させていたのですが、NASとrsync双方の処理が追いつかなくなってきたので、より速いバックアップツールが欲しくなって試したものでした。バージョンは1.3xだったと思います。

DirSync ProはJavaベースのクロスプラットフォームアプリケーションで、インターフェースはJavaベースのアプリケーションにありがちなものです。FileZillaですら見たくもないという知人がいますので、人によっては受け入れ難い部類なのでしょうが、個人的にはこういったクロスプラットフォームのインターフェースはそれなりに許容範囲です。

今回は、安定バージョンが1.4.6なのですが、プレリリース版として1.4.7a8がありましたので、それを使ってみます。
DirSync Pro は、何処から手をつければいいのか困惑する程にオプション満載です。Java環境が必要だという点もケースによっては導入しづらいでしょう。数々のオプションを使いこなすためには、多少の手間を必要とするでしょうが、カスタマイズの多様性と処理スピードに納得できればなかなか捨て難いところがあります。
ここで、シンクロナイズという点から、どういった内容での同期が出来るかDirSync Proのプルダウンメニューを見てみましょう。

131119

■DirSync Proの基本的な同期モード—
同期ツールを使うということは、差分/増分のみを効率的にバックアップできるということが一番のメリットでしょう。

  • Mirror A -> B (incremental):

同期コピーといっていいでしょう。
新たに追加更新されたファイル/ディレクトリをDir A -> Dir Bにコピーします。例えばDir Aのフォルダ内にX’、Y、Zというファイルがあり、Dir BのフォルダにX、Wというファイルがある場合、同期コピーを行うとDir BはX’、Y、Zというファイルになります(ファイルWは消去されます)。結果として、Dir BのフォルダをDir Aのフォルダと同じになるようにコピーします。

  • Mirror B -> A (incremental):

Dir AとDir Bが逆向きになっています。

  • Synchronize A <-> B (incremental):

先ずMirror A -> Bをやって、次にMirror B -> Aをやるという双方向の同期です。
例えばDir Aのフォルダ内にX’、Y、Zというファイルがあり、Dir BのフォルダにX、Z’、Wというファイルがある場合、双方向コピーを行うとDir A、Dir BともにX’、Y、Z’、Wというファイルになります。
ただし、conflict resolution modeでコンフリクトしたファイル/フォルダの保存方法をオプション設定することが出来ます。
いずれにせよ、Dir A、Dir Bは同じ内容になります。

  • Synchronize A <-> B (custom):

双方向の同期ですが、いくかのオプション設定でカスタマイズするモードです。

  • Backup A -> B (full):

Dir A -> Dir Bに内容を全てコピーし、一致させるモードです。

  • Restore B -> A (full):

Dir AとDir Bが逆向きになっています。上のフルバックアップの復旧版ですね。

  • Contribute A -> B (incremental):

いわゆる追加コピーになり、Dir AのファイルをDir Bのフォルダに追加でコピーして行きます。例えばDir Aのフォルダ内にX’、Y、Zというファイルがあり、Dir BのフォルダにX、Wというファイルがある場合、追加コピーを行うとDir BはX’、Y、Z、Wというファイルになります。
Dir Bで削除されるものはありません。

  • Contribute B -> A (incremental):

Dir AとDir Bが逆向きになっています。

  • Synchronize A -> B (custom):

Dir A -> Dir Bの片方向の同期モードですが、この設定では、全てのタブが有効になりますので、多様なカスタマイズが出来ます。

  • Synchronize B -> A (custom)

Dir AとDir Bが逆向きになっています。

動作スピードも速い部類です。豊富なオプション機能など、複雑なパターンの同期が必要な時には強い味方となってくれます。

OS XのJava 6からJava 7へアップデートしてから、ディレクトリ選択ダイアログ内で、システム、ライブラリ、書類など‘.localized’ファイルで翻訳される予約語は表示されますが、その他の日本語名を持ったフォルダは表示すらしてくれなくなってしまいました。ファイルのコピー時にはしっかりUTF-8対応している訳ですから、残念な思いを抱きつつ、暫く使用をやめていたのですが、ここに書いたようにJava 7の環境変数を「ja_JP.UTF-8」に変更すればOKというが分かりましたので、暫く使ってみようと思います。

Java 7の環境変数を変更する—DirSync Proで日本語ディレクトリを表示

MavericksでネットワークプロトコルがSMB2が優先されることになり、ネットワークプロトコルとrsync 3のオプションの組み合わせを探っているのですが、ファイルフラグと拡張属性のコピーオプションでエラーが出るようになり、対処に苦労し始めたのをきっかけに、別な方法も試してみることにしました。

最初に思いついたのは、DirSync Proです。これは、バージョン1.3の頃から少し使っていて、大体の構成は知っているつもりです。
1.4以降あまり使わなくなったのは、ある時から日本語のディレクトリを表示しなくなってしまったからなのです。

DirSync Pro<http://www.dirsyncpro.org>はJavaベースのクロスプラットフォームアプリケーションで、インターフェースは少し使いにくいかも知れません。名称からして、ボリュームのフルバックアップ向けというよりもディレクトリ間の同期に主点をおいたものといえそうです。
Javaベースということで、ふと思いついて、「java エンコーディング」「Java 7 日本語 環境」などで検索したところ、「OS XにおけるJavaアプリケーションのエンコーディング」<http://piyopiyoducky.net/blog/2013/06/03/encoding-of-java-application-in-os-x/>というページにたどり着きました(情報有難うございます)。
どうやら、DirSync Proのバージョンによる改変が起因ではなく、私の環境がJava6からJava 7に移行したことが原因のようです。

■DirSync ProをJava 7環境で使うにあたって、最初にすべきこと
OS X+Java 7環境で、Javaベースのアプリケーションに環境変数として「ja_JP.UTF-8」を渡すためには、Mountain Lion以降は、‘/etc/launchd.conf’で設定するようです。
一時的に環境変数を渡す場合は、

$ launchctl setenv LANG ja_JP.UTF-8

で‘launchctl’を使って渡せるのですが、マシンを再起動するとリセットされるので、恒常的に環境変数を設定するためには、‘/etc/launchd.conf’で設定するということのようです。

・$ sudo echo ‘setenv LANG ja_JP.UTF-8’ | tee /private/etc/launchd.conf

といった風に、launchd.confを書き込もうとしたのですが、ここ<http://wp.me/p1Cs3W-6R>で記したように、ターミナルからはパーミッションエラーで書き込めません。
そこで、

do shell script “sudo echo ‘setenv LANG ja_JP.UTF-8’ | tee /private/etc/launchd.conf” user name “my account” password “my password” with administrator privileges

と、AppleScriptでやることにしました。
これで、Java 7の下でUTF-8が使え、DirSync Proで日本語のディレクトリ表示ができるようになりました。