![systemd 自动挂载特定 USB 设备后运行备份脚本](https://linux22.com/image/211265/systemd%20%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%E7%89%B9%E5%AE%9A%20USB%20%E8%AE%BE%E5%A4%87%E5%90%8E%E8%BF%90%E8%A1%8C%E5%A4%87%E4%BB%BD%E8%84%9A%E6%9C%AC.png)
我需要在安装特定 USB 记忆棒后运行一个脚本,特别是执行备份。
我见过许多(和旧的)帖子在 udev 规则内安装设备,但是现代操作系统已经将 systemd 预配置为自动安装闪存驱动器。
我有这个 udev 规则,
ACTION=="add", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="000c", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", RUN+="/home/me/scripts/backup-x.sh"
因为这是我知道的唯一一个可以在设备连接后专门运行某些东西的 Linux 内核钩子。
然而,当设备被 systemd 自动安装时,即。连接后右侧/media/me/0021-0000
:
Sep 27 12:32:00 t14 udisksd[1272]: Mounted /dev/sda at /media/me/0021-0000 on behalf of uid 1000
我想我不应该在 udev RUN 脚本中安装它(甚至执行长时间操作,如备份)。在 RUN 脚本中尝试过这个,
systemd-mount --owner me $DEVNAME /mnt/x
zip /home/me/x/backup-$(date +'%Y-%m-%d_%H%M%S').zip /mnt/x/*
但是,它会产生 2 个不同的安装座。我的首先发生,然后是 auto /media/me/0021-0000
。我想知道这样好不好。
实现这一目标的最简单且正确的方法是什么?
PD:运行 Pop!_OS 22.04LTS