quote:
jelly schreef op zondag 25 mei 2008 @ 09:24:
[...]
Dat is harstikke handig, hoe heb je het precies gedaan? Zou je misschien zinvolle links willen posten, ik denk dat dit namelijk voor meerdere mensen behalve ik interessant is. Of misschien het script met ons willen delen
Ik weet dat je het met udev rules kan doen, alleen is dit mij nooit gelukt

Zeker handig. Echt links heb ik niet over Zenity is heel weinig te vinden, ivman heb ik gewoon de man en de voorbeelden gebruikt die erbij zaten en bash is genoeg over te vinden.
Eerst moet je de volgende tools installeren:
code:
1
| sudo apt-get install zenity ivman rsync |
Ivman:
De Zenity config files staan in
~/.ivman en dat gaat het nu om
IvmConfigActions.xml. Daar staan aardig wat voorbeelden in en via
man IvmConfigActions.xml kon je nog meer info vinden (natuurlijk ook via Google maar goed).
Ik heb het zo geconfigureerd dat de harde schijf wordt gedetecteerd aan zijn naam:
XML:
1 2 3 4
|
<ivm:Match name="hal.info.product" value="WDP">
<ivm:Option name="exec" value="bash /home/makksjuh/zenityRsync.bash" />
</ivm:Match>
|
Zenity monitored dus HAL en als er een match is met
hal.info.product wordt er een script afgevuurd. Je kan ook iets anders gebruiken (zou zeggen speel even met hal-device en grep). Zo zou ik ook
hal.volume.uuid = '96FC77EFFC77C84F' kunnen gebruiken. Je kan ook nog weer scripts afvuren als de device wordt afgekoppeld met ivman etc etc...
Ik heb wel
XML:
compleet gecommend omdat dat niet helemaal goed ging met mounten.
Zenity:
Zenity gebruik ik om een simpel dialoog venster weer te geven.
zenityRsync.bash
bash:
1
2
3
4
5
6
7
8
9
| #!/bin/bash
date=`cat /home/makksjuh/.lastSync`
zenity --question --title "Sync part of /home" --text "Do you want to sync part of /home? \n\nLast sync: $date"
if [ "$?" = 0 ] ; then
echo "Sync started"
bash /home/makksjuh/rsync.bash | zenity --progress --percentage=0 --auto-close
else
echo "Sync canceled"
fi |
Dit script wordt dus afgevuurd als ivman een match heeft voor mijn HD. Eerst wordt er gevraagd of je wilt synchroniseren en bij de
if wordt afhankelijk van
“if [ "$?" = 0 ] ; then”
een nieuwe Zenity dialoog gestart met een progress bar.
rsync.bash wordt hierbij gebruikt als input voor de progress bar (pipe) en voert de daadwerkelijke synchronisatie uit.
Nu dan even rsync.bash zodat dat wat duidelijker word (dingen die worden gesynchroniseerd zijn weg gelaten met dus vervang 1, 2, 3 ...)
bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/bin/bash
echo "# Sync. 1"
rsync -rtpgv --delete /home/makksjuh/1/ /media/WDP/backup/1/ | echo 0
echo "# Sync. 2"
rsync -rtpgv --delete /home/makksjuh/2/ /media/WDP/backup/2/ | echo 12
echo "# Sync. 3"
rsync -rtpgv --delete /home/makksjuh/3/ /media/WDP/backup/3/ | echo 25
echo "# Sync. 4"
rsync -rtpgv --delete /home/makksjuh/4/ /media/WDP/backup/4/ | echo 37
echo "# Sync. 5"
rsync -rtpgv --delete /home/makksjuh/5/ /media/WDP/backup/5/ | echo 50
echo "# Sync. 6"
rsync -rtpgv --delete /home/makksjuh/6/ /media/WDP/backup/6/ | echo 62
echo "# Sync. 7"
rsync -rtpgv --delete /home/makksjuh/7/ /media/WDP/backup/7/ | echo 75
echo "# Sync. 8"
rsync -rtpgv --delete /home/makksjuh/8/ /media/WDP/backup/8/ | echo 87
echo "# Finished"; echo 100
date > /home/makksjuh/.lastSync |
rsync -rtpgv --delete pas dit aan naar je wensen. Ik heb het zo dat als er iets wordt verwijderd in /home het bij de synchronisatie ook wordt verwijderd bij de HD.
met
“echo # text”
verander je de waarde van
--text in Zenity. De andere waardes die ik echo zijn nodig voor het percentage. Schrijf dan nog even de datum weg in een file die ik in de eerste dialoog gebruik om weer te geven wanneer er voor het laatst is gesynchroniseerd.
Ik kan niet veel met bash maar ook mij is het gelukt

. Veel zoeken en proberen en als je het door hebt is het allemaal heel erg begrijpelijk en simpel.
Ik hoop dat het zo duidelijk is.
edit:
Zenity manualmaxjuh wijzigde dit bericht 27-05-2008 22:29 (5%)