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で日本語のディレクトリ表示ができるようになりました。

10.9 Mavericksではsudoの動作が変わった?

‘/private/etc’以下に新規ファイルを作りたいと思って、

$ sudo echo ‘some text’ | tee /private/etc/some.txt

とやっても書き込めません。

2013-11-15 15.47.05

作業をしているのは管理者権限を持ったユーザアカウントで、グループは‘staff’です。
色々とやってみて分かったことは、どうやら‘root’アカウントでなければ、‘root’管理下のシステムファイル/ディレクトリは改変できないということのようです。

○どうやって‘root’になるのか

  • 初期状態のままでは‘root’ユーザのアクセスは許可されていません
  • $ su rootとやっても拒否されます(そもそも‘root’ユーザが無効になっているのですから…)

■‘root’ユーザアクセスを許可する方法
かつてのNet Infoの時代と異なって、現在は、ディレクトリユーティリティ.app</System/Library/CoreServices/Directory\ Utility.app>を使って‘root’ユーザアクセスを許可することができます<http://support.apple.com/kb/PH14281?viewlocale=ja_JP&locale=ja_JP>。
ディレクトリユーティリティ.appを立ち上げて、ウィンドウ左下のカギアイコンをクリックしてからログインアカウント(管理者権限)とパスワードを入力して鍵を解除し、「編集」メニューの「ルートユーザを有効にする」を選択し、‘root’ユーザのパスワードを設定すればOKです。
これで、漸く、

$ su root

が有効になります。そこで、

$ echo ‘some text’ | tee /private/etc/some.txt
$ exit

とやれば、上記の処理は完了できます。

■‘root’ユーザアクセスが無効の状態で‘root’ユーザアクセスをする
常に‘root’ユーザアクセスが有効であるのは剣呑(?)だという場合には、次の要領で‘root’ユーザアクセスセッションを作ることができます。

$ sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

で、もう1つターミナルを開く。この時、ユーザは‘root’になります。

2013-11-15 12.46.48

セッションをログアウトし、‘root’ユーザでのターミナルを終了すれば、元のユーザアカウントのターミナルに戻ります。

■ところがFinderでは
‘root’管理下のエリアへのアクセスを、sudoからは排除するという考え方は、分からないでもないものです。これにとやかく言うつもりはないのですが、Finderで、‘/etc’を開いてドキュメントをそのウィンドウにドラッグすると、パスワード入力を求められますが、ユーザパスワードを入力するとコピーできてしまいます。つまり、‘some.txt’をユーザエリアの任意の場所で作って、それを‘/etc’にドラッグ&ドロップすればコピーできてしまうのです。もちろん、アクセス権は勝手に修正されませんので、必要であれば、‘root:wheel’のユーザ/グループ変更も含めて処理は必要となりますが、移動は簡単にできてしまう訳です。
この辺りの振る舞いに首尾一貫性を求めたいと思うのですが、いかがなものでしょうか?

• 補遺
拙作の‘Exchange_Locale.app’<http://wp.me/p1Cs3W-6b>もsudoで‘/etc/hosts’ファイルを書き込みます。従って、Mavericksではエラーが出てもおかしくありません。早速試してみました。が、正常動作します。
そこで、上記のターミナルでエラーが出る構文をそのままAppleScriptで実行してみることにしました。

$ sudo echo ‘some text’ | tee /private/etc/some.txt

を、

do shell script “sudo echo ‘some text’ | tee /private/etc/some.txt” user name “my account” password “my password” with administrator privileges

という風にAppleScriptで実行すると、結果は、OKです。
???
どちらを是とするのか判断できませんが、もう少し様子を見ていようと思います。

Automatorでランダムデスクトップピクチャー設定—Random_DesktopPicture.workflow

今回は、本当に小ネタです。
デスクトップピクチャーの切り替えのために、AppleScriptでスクリプトを書いていました。

property PictFolderPath : "SkyDrive:Photos"
on run
	set DocF to path to home folder from user domain as Unicode text
	set PictFolder to (DocF & PictFolderPath)
	tell application "Finder"
		set previousPict to desktop picture
		set targetPict to some item in alias PictFolder
		if targetPict is previousPict then set targetPict to some item in alias PictFolder
		set desktop picture to targetPict
	end tell
end run

フォルダ‘/SkyDrive/Photos’には画像ファイルしか入れていませんので、ここでは画像ファイルかどうかの判定もしていません。
無作為にピックアップしますので、もし現在のものと同じものを選んでしまった場合は、更に無作為に抽出するという方法となっています。

この画像ファイルが入ったフォルダを複数指定したくなってきました。となると、

  • 複数の画像フォルダのリストを作る
  • その中から、サブフォルダがあればその中まで拾って、画像ファイルだけをピックアップする
  • ピックアップされたアイテムのパスをリストに加工する

という作業が必要です。何行くらいかかるか考えていると、少々面倒になってきました。

■Automatorのアクションを使えば簡単では?
そこで、Automatorのアクションを使って、画像ファイルのフィルタリングをやってみようと思い立った次第です。

2013-11-14 3.02.54

Automatorでワークフローを作成すると、簡単に「Finder項目の取得」でターゲットフォルダのパスが拾えますし、ターゲットフォルダ内のアイテムからイメージファイルだけをピックアップするということが「フォルダの内容を取得」で容易にできます。また、複数のフォルダを指定するのが実に簡単で、フォルダの差し替えも簡単です。
これをAppleScriptだけでやるとそれなりの行数を書かなくてはならないところですが、Automatorでは実に簡単なアクションの組み合わせで実現できてしまいます。
(ピクアップされた画像ファイルからランダムにデスクトップピクチャーを指定するところでは、残念ですが(?)AppleScriptでやっています)
このファイル/フォルダの操作の簡便さに、SpotlightやTime Machine、Finderのラベルやスマートフォルダ、HFS+の拡張属性など、最近のOS Xが目指す方向性の一端が窺えるのでしょう。

「.DS*」と「._*」で始まる不可視ファイルの削除をAutomatorで—DeleteDotFiles

2007年、OS X 10.4 Tigerの頃に、DeleteDotFiles.appという名前で「.DS*」と「._*」で始まる不可視ファイル削除用のアプリケーションをリリースしたのですが、その後、メンテナンスモードに入ってそのまま放置していました。それでも、現在も古いリンクは切らさないでいるのですが、未だに結構な数のダウンロードアクセスがあります。
私個人は、それ程必要とするツールではないのですが、それなりに需要があるのでしょう。
そこで、同等の機能をAutomatorで作成してみることにしました。
基本的には、

$ find ‘thisFolder’ -name ‘.DS*’ -print0 | xargs -0 rm -fd
$ find ‘thisFolder’ -name ‘._*’ -print0 | xargs -0 rm -fd

を繰り返しているだけなのですが、AppleScriptだけで作成すると、フォルダの振り分けやエラー処理/ダイアログ周りなどに結構手間がかかります。

そこで、面倒な部分をAutomatorに振ってシンプルに何処までできるかやってみました。

2013-11-11 9.34.51 2013-11-11 9.36.19

図のように、ワークフローとサービスでは若干アクションの構成が変わります。
処理は結局AppleScriptでやってしまいました。複数の変数をloopで処理するには慣れた手法の方が楽なので、つい。
ここをシェルスクリプトでやれるともう少し処理が速いのでしょう。
AppleScriptの部分だけテキストで記しておきます。

on run {input, parameters}
	repeat with f in input as list
		set target to POSIX path of (f as alias) as Unicode text
		set Name_appendixList to {".DS*", "._*"}
		repeat with i in Name_appendixList
			do shell script "find " & quoted form of (target) & " -name " & quoted form of i & " -print0 | xargs -0 rm -fd"
		end repeat
	end repeat
end run

‘rm’のオプションで‘-d’を使っていますので、「.DS*」と「._*」で始まるフォルダがあればそれも削除対象になります。ディレクトリを対象にしないのであれば、このオプションは省いて下さい。
管理者権限でないとアクセスできないフォルダに関しては、5行目を次のようにすればいいでしょう。

		do shell script "find " & quoted form of (target) & " -name " & quoted form of i & " -print0 | xargs -0 rm -fd" password "User password" with administrator 

■補足—蛇足
コマンドの‘find…’以下は次のようにも書けます。

$ find ‘thisFolder’ -name ‘*.DS*’ -exec rm -fd {} \;

あるいは

$ find ‘thisFolder’ -name ‘*.DS*’ -delete

アプリケーションのキーボドショートカットを変更する

アプリケーションのキーボドショートカットを変更する方法としては、アプリケーション自体がメニュー/キーボドショートカットのユーザ定義機能を組み込んでいるというケースがあります。
Adobe製品の多く(全てのAdobe製品を知っている訳ではないのですが…)やTextWrangler.appなどがその例でしょう。

1

しかし、アプリケーション自体がメニュー/キーボドショートカットのユーザ定義機能を持っているケースは少ないので、メニュー/キーボドショートカットのユーザ定義機能を持っていないアプリケーションでキーボードショートカットを変更する方法としては、

  • システム環境設定のキーボードから、アプリケーション毎のキーボードショートカットを定義する
  • 対象アプリケーションの初期設定plistファイルを加工する

ということになるでしょう。

■システム環境設定のキーボードから、アプリケーション毎のキーボードショートカットを定義する

2013-11-05 8.43.42

図では、アプリケーションFileZilla.appの「切断(D)」コマンドに「コントロールキー+D」を割り当てているところです。
ショートカットは、定義したいキーのコンビネーションを直接打てば登録されます。
対象アプリケーションで、既に別なショートカットキーが当てられている場合でも、新たな設定が上書きされます。

■初期設定plistファイルを加工する
「キーボドショートカット」や「NSUserKeyEquivalents」などのキーワードで検索してヒットする‘defaults write…’という、ターミナルからコマンドで設定できる方法というのは、対象アプリケーションの初期設定ファイル「xxx.plist」を加工するということになります。
その方法は、

  • ターミナルから、‘defaults write…’というコマンドで設定する
  • plistファイルを編集できるツールで「NSUserKeyEquivalents」を追加する

という方法となります。
最近の傾向として、plistファイルはXML形式のplistファイルではなく、バイナリ形式のバイナリplistと呼ばれる形式の場合が多いので、テキストエディタではバイナリデータを解釈できないため編集はできないと思った方がいいです。例外的に、TextWrangler.appやBBEdit.appはバイナリplistファイルを扱うことができますが、素直に、plistエディタやXcode.appを使った方がいいでしょう。
参考までに、追加するエントリは、XML形式では次のようになります。

<key>NSUserKeyEquivalents</key>
<dict>
<key>変更したいメニュー項目名</key>
<string>キーボードショートカット</string>
</dict>

このとき、モディファイアキーは、
command=”@”
Option=”~”
Control=”^”
SHIFT=”$”
となります。
先ほどのFileZilla.appの例では、

<key>NSUserKeyEquivalents</key>
<dict>
<key>切断(D)</key>
<string>^d</string>
</dict>

となり、plistエディタ(ここではXcode.app)では

2

となります。
因に、これを‘defaults write…’でやれば、

$ defaults write de.filezilla NSUserKeyEquivalents -dict ‘切断(D)’ ‘^d’

となるはずなのですが、’切断(D)’の括弧の部分で何らかのエスケープが必要なようです。

このplistエディタを使う方法や、ターミナルから‘defaults write…’で設定する方法では、あらかじめ対象アプリケーションの初期設定plistファイルがなんという名前のファイルであるのか知っておく必要があることに加えて、もう1つ参照ファイルを編集しなければなりません。
システム環境設定のキーボードからショートカットを追加しているときに、Preferencesフォルダを変更日でソートして観察していると、アプリケーションの初期設定plistファイルと同時に「com.apple.universalaccess.plist」ファイルも連動して書き換えられているのが分かります。
この「com.apple.universalaccess.plist」ファイルのエントリで、ショートカットが変更されたアプリケーションを参照する仕組みとなっているようです。

2013-11-05 8.42.17

図で示すように、「com.apple.universalaccess.plist」ファイル中の「com.apple.custommenu.app」エントリに対象アプリケーションのplistファイル名が必要です。

こうしてみると、Cyberduck.appとFileZilla.appの接続解除(切断)コマンドをコントロールキー+Dで統一しようとして調べ始め、‘defaults write…’で簡単に設定できるようだなと思っていたのですが、結局は、システム環境設定のキーボードから設定した方が確実で早かったりするという、あまり有り難くない落ちでした。

Mavericksのネットワーク同期—SMB2とはねえ

OS X 10.9 Mavericksでは、Mavericks同士のファイル共有はSMB2を優先する仕様となったようです。
(Mavericksから10.6マシンへ接続すると、AFP、SMBがともにアクティブになっていてもAFPを優先するようです)

Mavericks同士で、BackupList+.app 8.4のrsync 3.09でバックアップを始めると、10.8同士ではエラー無しで動作していた設定で、エラーが発生するようになりました。
一部のファイルでデータフォーク、その他では、Finder情報や拡張属性を転送できないようです。
Mavericks同士で、Finder経由のコピーでは問題ないのは、送り手と受け手でFinder情報や拡張属性などのメタデータの補完を行っているということで、rsync経由でのコピーではその補完が効かないということなのでしょう。
当面の対策としては、‘afp://….’と書いて、AFPで接続するスクリプトを作成し、セッション開始は必ずAFPで行うというシーケンスを作ればいいようです。

AFPでマウント

rsyncの同期を開始

というステップにするしかないようです。
HFS+の拡張が続いている中、ネットワークプロトコルまで改変されると、バックアップユーティリティの作者達は頭が痛いことでしょう。
こちらも、暫くはコンソールログと睨めっこで、rsyncのオプションを探ることになりそうです。