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

nogajun
Samba ADはSysVolのレプリケーションをサポートしてません。ということで回避策がSamba Wikiに書いてあります。
- Rsync based SysVol replication workaround - SambaWiki: https://wiki.samba.org/index.php/Rsync_based_SysVol_replication_workaround
「普通に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を使う設定を書いている人もいました。
- rsyncd systemd units · GitHub: https://gist.github.com/tchollingsworth/1401352
- systemd VS xinetd | SIOS Tech. Lab: https://tech-lab.sios.jp/archives/9880
ということで/etc/rsyncd.conf
を置いてから、/etc/systemd/system/
以下にrsync.socket
とrsync@.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つを置いたらsystemctl
でsocket
のほうを有効化すればOK。
systemctl enable rsync.socket
systemctl start rsync.socket
思ったけれど
書いてから気がついたけど、自分の用途だとlsynd使ったほうがよかったかも。 とりあえず覚書ということで。