Запущение Скрипта с USB-устройством

Я хочу скопировать каталог и его содержание к моему внешнему жесткому диску 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, ничего не происходит.:(

Какие-либо идеи о том, что могло быть неправильным?

Спасибо!

0
задан 13 November 2019 в 06:17

2 ответа

Выполните сценарий, когда карта памяти будет включена.

ВЫПОЛНЕНИЕ {тип}:
Это может только использоваться для очень коротко рабочих приоритетных задач. Выполнение обработки события в течение длительного промежутка времени может заблокировать все дальнейшие события для этого или зависимого устройства. Начинающие демоны или другие продолжительные процессы не подходят для 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

это не смонтирует диск в системе, только в песочнице.

1
ответ дан 21 December 2019 в 23:59

Вот что я делаю: служба 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

0
ответ дан 11 November 2020 в 18:45

Другие вопросы по тегам:

Похожие вопросы: