evolution-migrator.sh - Evolution levelező gconf beállításainak migrálása
A probléma: Adott gépről át szeretném vinni egy adott felhasználó levelezőjének beállításait egy másik gépre, pontosabban automatizálni szeretném ez a feladatot. Fontos megjegyezni, hogy itt pusztán a beállításokról van szó, a levelekről, kalendáriumról nem. Utóbbiakat egyszerű fájl-mozgatással meg lehet oldani.
A szkript egy olyan állományt állít elő, amely tartalmazza az Evolution alkalmazás gconf beállításait. Ezt az állományt egy másik gépen futtatva átmigrálódnak a levelező beállításai. Ehhez analóg eljárással tetszőleges olyan alkalmazás konfigurációját migrálhatjuk, amelyek a gconf-ban tárolják beállításaikat.
Néhány implementációs részlet: Gconf beállításokat a gconftool-2
paranccsal XML formátumba lehet exportálni, és ezt az XML fájlt használhatjuk a másik gépen a beállítások importálására.
A szkriptem az XML-t először tömöríti, majd base64-kódolja, így egy hordozható/mailezhető/copy-paste-elhető szövegfájlt kapunk, amely önkicsomagoló, tehát futtatva elvégzi a teljes kódolási,
kitömörítési és importálási feladatsort. Nekem fontos szempont volt, hogy ne kelljen egynél több fájl a megoldáshoz, ne kelljen figyelni arra, hogy hogyan hívják az adott fájlt, csak elindítom és kész.
#!/bin/sh
# version 2.0 - 2007-04-21
OUT=evolution-import_$(date --rfc-3339\=date).sh
cat > $OUT <<EOF
#!/bin/sh
DATA=/tmp/evolution-data.xml
tail -n +7 \$0 | openssl base64 -d -v | gzip -d > \$DATA
gconftool-2 --load \$DATA; rm \$DATA
exit 0
EOF
gconftool-2 --dump /apps/evolution | gzip | openssl base64 >> $OUT
chmod 755 $OUT