Al enige tijd ben ik aan het sukkelen om een automatische back-up gedaan te krijgen met udevadm maar dit lukt me niet helemaal.
Wat eigenlijk het einddoel is, is het volgende: er wordt een usb-hd in men linux bak gestoken en automatisch wordt een bepaalde directory gebackupped ernaar. Zodra de back-up klaar is, wordt er een mailtje gestuurd zodat je weet dat het proces klaar is en kan je je usb-hd verwijderen en ergens offsite bijhouden.
Het schrijven van een bash-script voor het back-uppen werkt al. Het probleem zit hem in het weten wanneer de usb-hd ingestoken wordt en het script ge-runt moet worden.
Om dit event op te vangen maak ik gebruik van udevadm. Concreet heb ik een extra filetje bijgemaakt /etc/udev/rules.d/81-backup.rules met de volgende inhoud:
Ik heb gekozen voor deze rule op nr. 81 te zetten zodat er niet belangrijks wordt overgeschreven wat misschien in vorige regels staat. Het bash script wat er nu normaal gerunt moet worden doet niets anders als dit:
Dus even gewoon laten zien dat het uitgevoerd is.
De info over mijn usb-device heb ik opgevraagd met: udevadm info -a -p $(udevadm info -q path -n /dev/sdb) dit gaf als resultaat: http://pastebin.com/2JSY1NFW.
Voor de filter regel in /etc/udev/rules.d/81-backup.rules heb ik al met veel verschillend combinaties zitten experimenten maar nog altijd match te regel precies niet.
Volgens mij is het probleem dat de filter regel niet ondubbelzinnig is en hij daarom niet matcht. Het lezen van dingen zoals http://reactivated.net/writing_udev_rules.html heeft met ook niet veel verder geholpen. Tevens is er voor mijn onduidelijkheid welke nummer de regel nu moet hebben (81 atm)?
Alvast bedankt
Wat eigenlijk het einddoel is, is het volgende: er wordt een usb-hd in men linux bak gestoken en automatisch wordt een bepaalde directory gebackupped ernaar. Zodra de back-up klaar is, wordt er een mailtje gestuurd zodat je weet dat het proces klaar is en kan je je usb-hd verwijderen en ergens offsite bijhouden.
Het schrijven van een bash-script voor het back-uppen werkt al. Het probleem zit hem in het weten wanneer de usb-hd ingestoken wordt en het script ge-runt moet worden.
Om dit event op te vangen maak ik gebruik van udevadm. Concreet heb ik een extra filetje bijgemaakt /etc/udev/rules.d/81-backup.rules met de volgende inhoud:
code:
1
| ACTION=="add", ATTRS{serial}=="2A07070658766", RUN+="/home/gjc/backup_script/test.sh" |
Ik heb gekozen voor deze rule op nr. 81 te zetten zodat er niet belangrijks wordt overgeschreven wat misschien in vorige regels staat. Het bash script wat er nu normaal gerunt moet worden doet niets anders als dit:
code:
1
2
| #!/bin/sh touch /home/gjc/backup_script/done.txt |
Dus even gewoon laten zien dat het uitgevoerd is.
De info over mijn usb-device heb ik opgevraagd met: udevadm info -a -p $(udevadm info -q path -n /dev/sdb) dit gaf als resultaat: http://pastebin.com/2JSY1NFW.
Voor de filter regel in /etc/udev/rules.d/81-backup.rules heb ik al met veel verschillend combinaties zitten experimenten maar nog altijd match te regel precies niet.
Volgens mij is het probleem dat de filter regel niet ondubbelzinnig is en hij daarom niet matcht. Het lezen van dingen zoals http://reactivated.net/writing_udev_rules.html heeft met ook niet veel verder geholpen. Tevens is er voor mijn onduidelijkheid welke nummer de regel nu moet hebben (81 atm)?
Alvast bedankt