Aunque acabamos de comentar que ActiveSync realiza la conversión entre formatos al transferir los archivos, si copiamos un archivo Excel directamente a la SD (por ejemplo), lo podremos abrir sin mayor problema en la PocketPC (siempre teniendo claras sus limitaciones). Esta característica es la que vamos a utilizar para la conversión de archivos.
En los repositorios de Ubuntu se encuentra disponible la utilidad unoconv que nos ayudará en nuestra tarea. Tal y como podemos leer en la ayuda, unoconv es una utilidad en línea de comandos (esto es lo realmente bueno) que nos permite realizar conversiones entre documentos soportados por OpenOffice. Necesita una instancia de OpenOffice para realizar la conversión, por lo que si no tenemos una en ejecución puede arrancar la suya propia de manera temporal.
unoconv is a command line utility that can convert any file format that OpenOffice can
import, to any file format that OpenOffice is capable of exporting.
unoconv uses the OpenOffice's UNO bindings for non-interactive conversion of documents
and therefor needs an OpenOffice instance to communicate with. Therefore if it cannot
find one, it will start its own instance for temporary usage. If desired, one can
start a "listener" instance to use for subsequent connections or even for remote
connections.
El uso es muy sencillo, arrancamos la instancia temporal de OpenOffice y realizamos la conversión entre los documentos.
ivan@doraemon:~$ unoconv --listener &Con esto hemos convertido a formato excel y word respectivamente los archivos HojaCalculo.ods y Documento.odt.
ivan@doraemon:~$ unoconv -f xls HojaCalculo.ods
ivan@doraemon:~$ unoconv -f doc Documento.odt
ivan@doraemon:~$ kill -15 %-
Con este ejemplo se ve que es muy sencillo realizar un pequeño script que convierta nuestros archivos Excel a ODS y viceversa cada vez que queramos sincronizar la PocketPC. Esta misma conversión se podría hacer directamente entre los formatos PocketExcel y ODS, pero por alguna razón la conversión con unoconv falla. Sin embargo si ese mismo archivo PocketExcel lo intento abrir desde OpenOffice, funciona correctamente. Es por esto que la conversión la realizo entre Excel y ODS.
Teniendo todo lo anterior en mente vamos a plantear el siguiente escenario para realizar la conversión.
#!/bin/sh
#
# syncPocketPC.sh: Script para la sincronización de la PocketPC
# y linux por medio de rsync
#
# Iván López Martín
# http://lopezivan.blogspot.com
#
SYNC_DIR=/home/ivan/MisDocs/PocketPC/
TMP_SYNC_DIR=/home/ivan/MisDocs/PocketPC/tmp/
POCKETPC_DIR=/home/ivan/PocketPC/SD\ Card/Personal/
# Sincronización desde el PC a la PocketPC
####
cd $TMP_SYNC_DIR
unoconv --listener &
unoconv -f xls $SYNC_DIR/*.ods
unoconv -f doc $SYNC_DIR/*.odt
mv $SYNC_DIR/*.xls $TMP_SYNC_DIR
mv $SYNC_DIR/*.doc $TMP_SYNC_DIR
kill -15 %-
rsync -avz --delete --update ${TMP_SYNC_DIR} "${POCKETPC_DIR}"
# Sincronización desde la PocketPC al PC
####
rsync -avz --delete --update "${POCKETPC_DIR}" ${TMP_SYNC_DIR}
cd $SYNC_DIR
unoconv --listener &
unoconv -f ods $TMP_SYNC_DIR/*.xls
unoconv -f odt $TMP_SYNC_DIR/*.doc
mv $TMP_SYNC_DIR/*.xls $SYNC_DIR
mv $TMP_SYNC_DIR/*.doc $SYNC_DIR
kill -15 %-
Aunque la idea es buena este script tiene algunas limitaciones:
unoconv uses the UNO bindings to connect to OpenOffice, in absence of a usable socket, it will start its own OpenOffice instance with the correct parameters. However, OpenOffice requires a working DISPLAY (even with -headless option) and therefor you cannot run it in a true console, you need X.
Aún con las limitaciones comentadas anteriormente tenéis un esqueleto funcional para poder mejorarlo y hacer la versión 0.2 de script con las mejoras que he propuesto. Si alguien se anima a mejorarlo que me lo pase y actualizaré el artículo.
Para finalizar añadir que también vamos a utilizar rsync para la sincronización de la base de datos de KeePass, así conseguimos tener siempre sincronizados los cambios que hagamos tanto en el ordenador como en la PocketPC. Recordamos que realizamos la sincronización en los dos sentidos para asegurarnos de tener la siempre la información más actual en todos los dispositivos.
#!/bin/sh
#
# syncKeePass.sh: Script para la sincronización de la base de datos
# de KeePass entre la PocketPC y linux por medio de rsync
#
# Iván López Martín
# http://lopezivan.blogspot.com
#
LINUX_DIR=/home/ivan/MisDocs/
POCKETPC_DIR=/home/ivan/PocketPC/SD\ Card/Personal/
# Linux -> PocketPC
rsync -avz --update --include=*.kdb --exclude=* "${LINUX_DIR}" "${POCKETPC_DIR}"
# PocketPC -> Linux
rsync -avz --update --include=*.kdb --exclude=* "${POCKETPC_DIR}" "${LINUX_DIR}"
Con este pequeño script hemos logrado sincronizar nuestro archivo de passwords entre la PocketPC y Linux, además se podrían añadir otros tipos de archivos y otras rutas para adaptarlo a nuestras necesidades. Como siempre, estoy abierto a cualquier sugerencia para mejorarlo.
No hay comentarios:
Publicar un comentario