High Sierra

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.confrsyncd.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では使用していませんので,正しく機能するかどうか解りません.

参考にしたページ

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

Notes:
1. もしくは,MacPortsを使用してインストールする.
2. 以下の説明には直接関係しませんが,設定ファイルは,/opt/etc内のrsyncd.secretsとrsyncd.confになるように,configureでオプション設定しています.
もしくは,MacPortsを使用してインストールする.
以下の説明には直接関係しませんが,設定ファイルは,/opt/etc内のrsyncd.secretsとrsyncd.confになるように,configureでオプション設定しています.