rsyncdをxinetdじゃなくてsystemdから使おう

nogajun
nogajun

Samba ADはSysVolのレプリケーションをサポートしてません。ということで回避策がSamba Wikiに書いてあります。

「普通にrsyncで同期しろ」ってことですが、なんと。これがrsyncdをxinetdで待ち受けてるんですよ。

今どきxinetd使いたくねーと思ったので調べてみると、rsyncのパッケージはsystemdのデーモンに対応しています。

rsyncdをデーモンで動かす

なんでrsyncデーモンで動かすだけなら/etc/rsyncd.confを置いてから、systemdを有効にすれば使えます。

(/etc/rsyncd.confを用意する)
systemctl enable rsync
systemctl start rsync

これでrsyncdとして使えます。

rsyncdを待ち受けで動かす

xinetdなんだし、ずっと起動じゃなくてアクセスがあったときだけ使いたいという人もいるかもしれません。

調べてみるとsystemdはsocketで待ち受けできるそうで、待ち受けでrsyncdを使う設定を書いている人もいました。

ということで/etc/rsyncd.confを置いてから、/etc/systemd/system/以下にrsync.socketrsync@.service(ファイル名に@が必要)のファイルを置いて有効にすればいいそうです。

/etc/systemd/system/rsync.socket

[Unit]
Description=rsyncd Service Sockets

[Socket]
ListenStream=873
Accept=yes

[Install]
WantedBy=sockets.target

/etc/systemd/system/rsync@.service

[Unit]
Description=rsyncd Rsync Daemon
After=network.target

[Service]
ExecStart=/usr/bin/rsync --config=/etc/rsyncd.conf --daemon
StandardInput=socket

この2つを置いたらsystemctlsocketのほうを有効化すればOK。

systemctl enable rsync.socket
systemctl start rsync.socket

思ったけれど

書いてから気がついたけど、自分の用途だとlsynd使ったほうがよかったかも。 とりあえず覚書ということで。