Я хочу скопировать каталог и его содержание к моему внешнему жесткому диску USB, когда я подключаю его к своему ноутбуку автоматически.
Так, я создал названный файл 00-usb-backup.rules
на /etc/udev/rules.d
с этим содержанием:
ACTION=="add", ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", RUN+="/home/fabio/bin/backup"
backup
сценарий имеет разрешение работать как программа. И его содержание:
#! /bin/bash
cp -r /home/fabio/Ads/ /media/fabio/BACKUP/teste/
После ответа на другом потоке я отредактировал visudo
и добавил следование последней строки:
fabio ALL=(ALL) NOPASSWD: /home/fabio/bin/backup
Но когда я подключаю жесткий диск USB, ничего не происходит.:(
Какие-либо идеи о том, что могло быть неправильным?
Спасибо!
Выполните сценарий, когда карта памяти будет включена.
ВЫПОЛНЕНИЕ {тип}:
Это может только использоваться для очень коротко рабочих приоритетных задач. Выполнение обработки события в течение длительного промежутка времени может заблокировать все дальнейшие события для этого или зависимого устройства. Начинающие демоны или другие продолжительные процессы не подходят для udev; разветвленные процессы, отсоединенные или нет, будут безусловно уничтожены после того, как обработка событий закончилась. Обратите внимание, что, запуская программы, которые получают доступ к сети или монтируют/размонтируют, файловые системы не позволяются в правилах udev, из-за песочницы по умолчанию, которая осуществляется на systemd-udevd.service.
/etc/udev/rules.d/90-usb-backup.rules:
ACTION=="add", SUBSYSTEM=="block", \
ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", \
ENV{DEVTYPE}=="partition", RUN+="/bin/sh -c '/home/fabio/bin/backup.sh'"
/home/fabio/bin/backup.sh:
(удостоверьтесь, что Ваш сценарий имеет набор битов выполнения; chmod +x сценарий)
#!bin/bash
if [[ -b $DEVNAME ]] && \
mount $DEVNAME /home/fabio/Ads/
then
cp -a /home/fabio/Ads/ /media/fabio/BACKUP/teste/
fi
это не смонтирует диск в системе, только в песочнице.
Вот что я делаю: служба systemd (например, borgmatic.service) запускается правилом udev на основе события горячего подключения.
SUBSYSTEM=="блокировать", ACTION=="добавить", ENV{DEVTYPE}=="раздел", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="borgmatic.service"
Для службы в моя папка ~/.config/systemd/user
[Единица измерения] Описание=/домашняя резервная копия
[Service]
Type=oneshot
ExecStart=/home/xxx/.local/bin/borgmatic