Macintosh > High Sierra
rsyncのデーモン化
手でbuildの場合
まず,Mac OS Xに付属のrsyncは陳腐化している上にバグがありますので,自分で最新の公式ソースをbuildして差し替えることを,強くお勧めします.
以下の話は,自分でbuildした,rsync 3.xが,/opt/bin/rsyncにインストールされていることが前提です.
以下のテキストをXcodeなどでplist化して適当なところに保存します.
{
Label = "local.rsyncd";
ProgramArguments = (
"/opt/bin/rsync",
"--daemon",
);
inetdCompatibility = {
Wait = NO;
};
Sockets = {
Listeners = {
SockServiceName = rsync;
SockType = stream;
};
};
}
ファイル名は,Labelと一致させるために,この例では,local.rsyncd.plistとします.
そして,local.rsyncd.plistがホームディレクトリーにあるとして,
cd /Library/LaunchDaemons sudo cp ~/local.rsyncd.plist . sudo chmod a+x local.rsyncd.plist sudo launchctl load local.rsyncd.plist
でよさそうです.
MacPortsの場合
MacPortsで,rsyncをインストールする場合,インストールの最後にでるインストラクションに従って,
sudo port load rsync
で,rsyncdがデーモン化できます.その前に,/opt/local/etc内に,rsyncd.confとrsyncd.secretsを用意しておく必要があります.
アクセス権の付与
もう一点,必要なのが,サーバー側(デーモン側)のrsyncへのフルアクセス権の付与です.これをしないと,例えば写真のライブラリーのシンクロができません.クライアント側で必要かどうかは解りませんが,筆者の場合クライアントとしか動かさないMacはないので,アクセス権を与えています.
設定場所は,「システム環境設定」の「セキュリティとプライバシー」の「プライバシー」の「フルディスクアクセス」です.パスワードを入力してカギを外してから,「+」を押して,/opt/local/bin/rsyncを見つけ出して,追加します.通常では隠しファイルがダイアログに表示されませんから,コマンド+シフト+”.”を押して,表示するようにしてから選びます.ここに追加すれば,システムやデーモンの再起動なしで,アクセスできるようになります.
Staticなルートの追加
本件は,現在使用していませんが,将来的に何らかのヒントになるかも知れないので残しておきます.
クライアント側でやるべきとは思わないのですが,LinuxのルーターがARPを発しても全然効かないようなので,クライアントであるMacのほうでStatcなルーティングを試してみます.
{
Label = "local.routeadd";
RunAtLoad = YES;
KeepAlive = NO;
ProgramArguments = (
"/sbin/route",
add,
"-net",
"192.168.99.0",
"-netmask",
"255.255.255.0",
"-gateway",
"192.168.1.99",
);
StartInterval = 1200;
}
こんなんでどうでしょう.下記リンクのページを参考にしていて,20分ごとにroute add…が実行されます.
この機能はMac OS Sierraでは使用していませんので,正しく機能するかどうか解りません.
参考にしたページ
“参考”でなく,そのまんまかも^^;
