以前にも「Logwatchをsystemd timerで日次処理する」でsystemsをcron代わりに使ったのですが、ちゃんと理解しないまま、動けばいいや的に終わらせてしまったので、もうちょっと調べて、LDAPの月次バックアップを設定することにしました。
実際のserviceとtimerを作成するにあたって、参考にしたのは、ここ。
Using systemd as a cron replacement
必要最低限のserviceとtimerのサンプルが記述されています。これを参考に、まずはldapdump.serviceファイルを作成します。
/etc/systemd/system/ldapdump.service
[Unit]
Description=LDAP dump
[Service]
Type=simple
ExecStart=/root/bin/ldap_dump.sh
ldap_dump.shは事前に作成しておいたLDAPをダンプするスクリプトです。内容としては
slapcat -l /path/to/backup.ldif
のようにslapcatを用いてダンプをとるスクリプトです。rootをownerにして、実行権限を与えておくのを忘れないようにしましょう。
続いて、monthlyldapdump.timerファイルを作成します。
/etc/systemd/system/monthlyldapdump.timer
[Unit]
Description=Run LDAP dump monthly
[Timer]
OnCalendar=*-*-01 02:00:00
Unit=ldapdump.service
[Install]
WantedBy=basic.target
OnCalendarの書式で月次の実行日時を指定します。この例では毎月1日の午前2時に実行するように指定しています。
書式については、上の参考ページにもリンクされているページを参考にしました。
Parsing Timestamps
後はmonthlyldapdump.timerを起動すればOKです。
systemctl enable monthlyldapdump.timer
systemctl start monthlyldapdump.timer
これまた参考ページに記載がありますが、serviceを起動しないように注意してください。