Yosemite

rsyncのデーモン化

Mountain Lionまでは,StartupItemsで動かしていましたが,YosemiteではStartupItemsは無効化されてしまいました.

で,あちこち調べたところ,正しい方法としては,/Library/LaunchDaeomsにplistとして置くのが良さそうです.

まず,このテキストをXcodeなどでplist化して適当なところに保存します.

{
	Label = "local.rsyncd";
	ProgramArguments = (
		"/usr/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

でよさそうです

なお,Mac OS Xに付属のrsyncは陳腐化している上にバグがありますので,自分で最新の公式ソースをbuildして差し替えることを強くおすすめします.設定ファイルは,/etc内のrsyncd.secretsとrsyncd.confです.

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…が実行されます.

参考にしたページ

“参考”でなく,そのまんまかも^^;

Notes:
1. /System/Library/LaunchDaemonsは,El Capitanでは書き込み・修正できないので,/Library/LaunchDaemonsに変更しました.
/System/Library/LaunchDaemonsは,El Capitanでは書き込み・修正できないので,/Library/LaunchDaemonsに変更しました.