在插入 systemd 的 HD 上运行备份

在插入 systemd 的 HD 上运行备份

当我通过 USB 插入 HD 时,它应该 a) 安装它 b) 运行我的备份脚本。

我目前拥有的是backintime.service

[Unit]
Description="Runs backintime to backup."

[Service]
User=user
ExecStart=/usr/bin/systemd-inhibit --what=sleep --why="Backup" "backintime -b"

启动备份脚本并backup.mount

[Unit]
Description=Backup Disk
Before=backintime.service

[Mount]
What=/dev/disk/by-uuid/931129c7-7f15-4042-9a69-796c9eb8ffc9
Where=/media/backup

但如何自动执行呢?

答案1

我正在努力实施一个非常相似的系统。我让它工作了,但我仍然想调整这个和那个(请参阅这个更一般的问题:systemd - 服务完成后卸载设备)。

这是解决您问题的有效解决方案:

备份服务

[Unit]
Description=<DESCRIPTION HERE>
BindsTo=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
After=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount

[Service]
ExecStart=<CALL TO BACKUP SCRIPT HERE>

注意:要获取存储设备单元的列表,请使用systemctl list-units --all --full | grep disk

您可能想添加拒绝手动启动=在[单位]下也是。

mnt-备份.mount

[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=umount.target

[Mount]
What=/dev/disk/by-uuid/<DEVICE UUID HERE> 
Where=/mnt/backup
Type=<FILESYSTEM HERE>

你已经差不多到这里了,现在要自动开始backup.service,我们将使用udev规则

在这里,您可能还想在 [Unit] 下添加 RefuseManualStart=yes。

90-备份.规则

KERNEL=="sd*", ATTRS{serial}=="<HD SERIAL HERE>", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup.service"  

注意:要获取特定设备的属性列表(包括其序列号),请使用udevadm info -a -n /dev/sd*

相关内容