Je rencontre des problèmes pour utiliser udev afin d'exécuter un script shell qui sauvegarde mes disques durs sur un disque externe chaque fois que le disque externe est connecté via USB. Tout fonctionne sauf l'appel effectif à rdiff-backup. Udev détecte le disque dur et appelle le script correctement. Le script s'exécute et affiche correctement les notifications sur le bureau, mais rdiff-backup n'est jamais exécuté par le script shell et le script se termine immédiatement sans sauvegarder les disques. J'ai déjà modifié mon fichier sudoers pour que le script ait les autorisations appropriées.
Je suis conscient que Cuttlefish me permettrait d'effectuer cette action relativement facilement, mais dans le souci de m'instruire sur la méthode générale, je préférerais beaucoup apprendre à utiliser les outils déjà intégrés à Linux pour accomplir ceci par moi-même. Toute aide serait grandement appréciée.
Mes règles udev sont définies comme suit :
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1f75", ATTR{idProduct}="0621", RUN+="/home/nam/.scripts/backup_root_and_home_folders_to_external_drive.sh"
et mon script shell est le suivant :
#!/bin/bash
#sudo su
export DISPLAY=:0
export XAUTHORITY=/home/nam/.Xauthority
logger "Sauvegarde des répertoires racine et home sur un disque externe..."
###SAUVEGARDE DU RÉPERTOIRE RACINE
#Émettre une notification système pour le début de la sauvegarde
sv=$(date "+%T")
msgvar="Début de la sauvegarde du répertoire / sur un disque externe à "
notif=${msgvar}${sv}
sudo -u nam DISPLAY=":0.0" notify-send -t 1000 "$notif"
#notify-send -t 1000 "$notif"
logger "$notif"
#sleep 5
#Démarrer la sauvegarde du répertoire /
st=$SECONDS
#sudo rdiff-backup -v6 --force --exclude /sys --exclude /run --exclude /media --exclude /proc --exclude /home / /media/nam/BACKUP1/root
sudo su
/usr/bin/rdiff-backup -v6 --exclude /sys --exclude /run --exclude /media --exclude /proc --exclude /home / /media/nam/BACKUP1/root
#logger "$ok"
#Émettre une notification système pour la fin de la sauvegarde
sv=$(date "+%T")
stt=$SECONDS
et=$(($stt - $st))
#notify-send -t 1000 "Sauvegarde du répertoire / terminée à $sv.
#Le processus a pris $et secondes."
sudo -u nam DISPLAY=":0.0" notify-send -t 1000 "Sauvegarde du répertoire / terminée à $sv.
Le processus a pris $et secondes."
###SAUVEGARDE DU RÉPERTOIRE HOME
#Émettre une notification système pour le début de la sauvegarde
sv=$(date "+%T")
msgvar="Début de la sauvegarde du répertoire /home sur un disque externe à "
notif=${msgvar}${sv}
#notify-send -t 1000 "$notif"
sudo -u nam DISPLAY=":0.0" notify-send -t 1000 "$notif"
#Démarrer la sauvegarde du répertoire /home
#sudo rdiff-backup -v6 --force /home/ /media/nam/BACKUP1/home/
sudo su
sudo /usr/bin/rdiff-backup -v6 /home/ /media/nam/BACKUP1/home/
#Émettre une notification système pour la fin de la sauvegarde
sv=$(date "+%T")
stt=$SECONDS
et=$(($stt - $st))
#notify-send -t 1000 "Sauvegarde du répertoire /home terminée à $sv.
#Le processus a pris $et secondes."
sudo -u nam DISPLAY=":0.0" notify-send -t 1000 "Sauvegarde du répertoire /home terminée à $sv.
Le processus a pris $et secondes."