Etiqueta: script

Copia de seguridad de un blog en WordPress

Resulta conveniente realizar con regularidad una copia de seguridad de la información que tengamos en nuestro blog. Este backup deberíamos hacerlo como mínimo antes de una actualización importante del blog, por ejemplo antes de migrar de WordPress 2.x a la versión 3.

Hacer un backup de wordpress consiste en dos cosas:

  • Copiar los ficheros (imágenes, temas, …)
  • Copiar los artículos y configuraciones (la base de datos)

Existen algunos plugins que pueden ayudarnos en estas tareas, pero si no tienes tirria a la línea de comandos en este artículo se describe un método rápido y eficiente para hacer la copia. El único requisito es que nuestro proveedor de hosting nos proporcione acceso por ssh, que es lo más habitual. Para ahorrarnos meter la clave ssh cada vez que hagamos la copia podemos subirla al servidor en este artículo se explica como crearla y subirla pero en resumen consiste en ejecutar estos dos comandos (o sólo el segundo si ya tenemos una clave creada)
ssh-keygen -b 4096 -t rsa
ssh-copy-id usuario@servidor

El primer paso será hacer un volcado de la base de datos a un fichero en el servidor:

ssh usuario@servidor "mysqldump --opt --user=USUARIO_BD -p --host=URL_BD NOMBRE_BD > /ruta/fichero_a_guardar"

Por ejemplo
ssh fpuga@dreamhost.com "mysqldump --opt --user=fpuga_bd -p --host=localhost conocimientoabierto_bd_wordpress > conocimientoabierto/base_datos.sql"

La opción -p significa que nos preguntará cual es la clave de la base de datos por consola. Podemos indicarla directamente haciendo –pasword=CLAVE. Esto puede ser útil si metemos estas sentencias en un script pero deberiamos tener el script a buen recaudo para que no puedan ver nuestra clave.

El fichero sql donde se volcará la base de datos podríamos comprimirlo, pero con la estrategia que vamos a usar es mejor dejarlo en texto plano. El proceso de comprimir tiene un consumo elevado de cpu (algunos hosting limitan la cpu que se consume) y en el siguiente paso nos bajaremos el fichero por rsync.

rsync lo que hace es buscar las diferencias entre lo que tengamos en el servidor y lo que tengamos en nuestro disco duro, y sólo se baja lo que varíe. Si hubiéramos comprimido en el paso anterior la base de datos tendría que bajarse el fichero entero pero al estar en formato texto se bajará sólo la diferencia lo que resulta óptimo tanto en gasto de cpu como en ancho de banda consumida. La copia de los ficheros del servidor a nuestro disco duro, consistirá entonces en ejecutar:

rsync -av --delete usuario@servidor:ruta_remota $RUTA_LOCAL

por ejemplo:

rsync -av --delete fpuga@dreamhost.com:conocimientoabierto/ /home/fpuga/backup/conocimientoabierto

La opción delete hace que se borren los archivos locales que ya han sido borrados del servidor remoto. Puede ser peligrosa así que cuidado. La ruta local donde se copien los archivos debe existir previamente. Fijaos en que cuando se pone la ruta remota después de los dos puntos no se inicia con / porque sólo queremos indicar una ruta relativa.

Por último borraremos del servidor el fichero de volcado de la base de datos
ssh usuario@servidor "rm /ruta/fichero_a_guardar"

Y para no teclear tanto podemos crearnos un script muy sencillito. Llega con que cambies los valores de las variables por los de tu servidor.

Antes de escribir el script estuve leyendo sobre algunos plugins pero ninguno se adaptaba a mis necesidades, de todas formas estas referencias puede venirte bien si prefieres usar otro sistema:

Traducir automáticamente ficheros .po

Ultimamente estoy dedicando parte de mi tiempo libre a algunos trabajos relacionados con la traducción. En concreto he portado a windows la última versión del software de traducción gtranslator y estoy participando en un proyecto para traducir de forma colaborativa al gallego el libro Producing Open Source Software.

Uno de los aspectos interesantes del proyecto poss-gl es que estamos usando una metodología propia de la traducción de software para un libro, con bastante buen resultado. Cada capítulo del libro se ha convertido en un fichero .po, que son los ficheros estándar de traducción en Software Libre. De este modo en lugar de ir traduciendo cada línea con un procesador de texto podemos emplear una herramienta avanzada como gtranslator para ello. Una de las características de gtranslator es que se puede visualizar además del texto original el contenido de otro fichero .po que contenga por ejemplo la traducción a un tercer idioma que nos sirva para comparar como han hecho otros traductores.

Basándome en esa posibilidad acabo de escribir un programita que permite traducir automaticamente un fichero po haciendo consultas a un servicio de traducción web. Las traducciones automáticas, a no ser que sean entre lenguas similares como castellano y gallego, son bastante malas pero, cargándolas como idioma alternativo en gtranslator pueden sernos de ayuda en nuestra propia traducción.

El programa se trata de un script programado en python y liberado con licencia GPL v3 que podeis descargar directamente desde mi repositorio de software. Para que funcione es necesario instalar también los módulos de python polib y BeautifulSoup.

Para ejecutarlo escribiremos en una consola de linux:

python translatePO.py -d [dirección] -i [fichero.po]

La dirección indica de que idioma a que idioma queremos traducirlo, por ejemplo en-es para traducir de inglés a castellano o gl-fr para hacerlo de gallego a francés.