Overview
マシンを変えたのでcronで行っていたdaily/weeklyのbackupをsystemdで行うようにしたのでメモのため記事にしておこうと考えた。
Environment
- Ubuntu18.04 (というかsysmtedであれば動くはず)
Procedure
Dump Scriptの準備
/usr/local/binに以下を配置。(systemd serviceファイルにコマンド直書きでもいいが、あとでやりたいことが増えた場合にscriptのほうが良さそうなので、backendはscriptにしておく)
/usr/local/bin/backup-daily.sh
#!/bin/bash
echo "Dumping backup in daily, /dev/nvme0n1p2 will be in /mnt/data1/dump-nvme0n1p2.daily"
dump -0uf /mnt/data1/dump-nvme0n1p2.daily /dev/nvme0n1p2
/usr/local/bin/backup-weekly.sh
#!/bin/bash
echo "Dumping backup in weekly, /dev/nvme0n1p2 will be in /mnt/data1/dump-nvme0n1p2.weekly"
dump -0uf /mnt/data1/dump-nvme0n1p2.weekly /dev/nvme0n1p2
※(もちろんだが、)dumpの保存先のマウントポイントは必要に応じて準備しておくこと。
systemd serviceとtimer
serviceとtimerファイルを以下のように準備
>ls -lt /etc/systemd/system/backup-*
-rw-r--r-- 1 root root 133 Mar 13 12:20 /etc/systemd/system/backup-weekly.service
-rw-r--r-- 1 root root 122 Mar 13 12:20 /etc/systemd/system/backup-weekly.timer
-rw-r--r-- 1 root root 148 Mar 13 12:20 /etc/systemd/system/backup-daily.timer
-rw-r--r-- 1 root root 131 Mar 13 11:51 /etc/systemd/system/backup-daily.service
それぞれの中身は以下。
/etc/systemd/system/backup-weekly.service
[Unit]
Description=Weekly backup activities
ConditionACPower=true
[Service]
ExecStart=/usr/local/bin/backup-weekly.sh
Type=oneshot
/etc/systemd/system/backup-weekly.timer
[Unit]
Description=Weekly backup activities
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
※weekly=Mon --* 00:00:00
/etc/systemd/system/backup-daily.service
[Unit]
Description=Daily backup activities
ConditionACPower=true
[Service]
ExecStart=/usr/local/bin/backup-daily.sh
Type=oneshot
/etc/systemd/system/backup-daily.timer
[Unit]
Description=Daily backup activities
[Timer]
OnCalendar=*-*-* 02:00
RandomizedDelaySec=1h
Persistent=true
[Install]
WantedBy=timers.target
systemd-timerをenable
sudo systemctl enable backup-daily.timer
sudo systemctl enable backup-weekly.timer
補足
ログを見たいときは、
systemctl status backup-daily.timer
systemctl status backup-daily.service
systemctl status backup-weekly.timer
systemctl status backup-weekly.service