Respalda el contenido de tu alojamiento web

Muchos tenemos contratado un servicio de alojamiento, que suele incluir espacio para ubicar nuestras webs, y la posibilidad de crear una o varias bases de datos. Normalmente nos garantizan que toda la información contenida en el alojamiento está protegida por copias de seguridad, por sistemas redundantes, y que no debemos preocuparnos de que se pierda nada. Pero también es muy recomendable tener “en casa” una copia de esos datos, tanto por simple respaldo, como a la hora de realizar ciertas actualizaciones en nuestros proyectos.

Los métodos habituales para acceder y descargar el contenido web y las bases de datos suele ser bastante tedioso, y poco práctico si se quiere hacer periódicamente. Por ello he montado un script para facilitar la tarea, y que sólo tiene estos requerimientos:

  1. Posibilidad de ejecutarlo desde un equipo con Linux.
  2. Acceso al contenido de nuestro alojamiento web a través de FTP.
  3. Base de datos en servidor MySQL.
  4. Acceso al host de nuestro alojamiento vía SSH, con posibilidad de ejecutar la herramienta mysqldump.

Si cumplimos con estos requisitos ya podemos comenzar con la configuración necesaria.

En primer lugar instalaremos los paquetes necesarios para el envío de correos electrónicos desde la línea de comandos:

sudo apt-get install ssmtp mailutils

Luego configuramos el sistema ssmtp, que hará uso de un servidor SMTP externo, editando los siguientes archivos:

/etc/ssmtp/ssmtp.conf

mailhub=host_servidor_smtp_externo:25
FromLineOverride=YES
AuthUser=usuario_smtp
AuthPass=password_smtp

/etc/ssmtp/revaliases

usuario_que_ejecutará_el_script:usuario@dominio.com:host_servidor_smtp_externo:25

A continuación autorizaremos la conexión de nuestro equipo y usuario al host remoto vía SSH para que no pida contraseña, y así poder incluir estas conexiones en el script.

En primer lugar generamos un par de claves RSA desde nuestro equipo, dejando la contraseña en blanco:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx usuario@host

Ahora creamos el directorio ~/.ssh en el host remoto (si no existe):

ssh usuario@host_remoto mkdir -p .ssh

Ahora añadimos nuestra clave pública (que hemos generado anteriormente) al final del fichero authorized_keys del host remoto, para lo que nos solicitará por última vez la contraseña:

cat .ssh/id_rsa.pub | ssh usuario@host_remoto 'cat >> .ssh/authorized_keys'

Con esto ya podemos hacer uso del script que viene a a continuación. La primera parte ejecuta remotamente un export de la base de datos que se le indique, enviando después un correo electrónico con el resultado del proceso. La segunda parte, sincroniza el contenido del alojamiento web con el de una carpeta local. Evidentemente sería inviable descargar cada vez todo el contenido remoto vía FTP, pero la herramienta lftp gestiona automáticamente la sincronización, descargando únicamente los archivos nuevos o modificados y eliminando los inexistentes. Para personalizar el script, es suficiente con modificar el contenido de las variables. También es posible ejecutar más de un export, o más de una sincronización, volviendo a establecer el valor de las variables y volviendo a llamar a las funciones correspondientes.

#!/bin/bash

# $SSH_USER = usuario conexión ssh
# $SSH_HOST = host conexión ssh
# $LOG_PATH = ruta destino log mysqldump
# $HTTP_LOG_PATH = ruta HTTP al destino log mysqldump
# $MYSQL_HOST = host conexión mysql
# $MYSQL_USER = usuario conexión mysql
# $MYSQL_PWD = contraseña conexión mysql
# $MYSQL_DB = base de datos mysql
# $MAIL_RCPT = destinatario correo electrónico

mysql_export() {

ssh $SSH_USER@$SSH_HOST "rm $LOG_PATH/mysql_$MYSQL_DB.log; mysqldump -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD --verbose --log-error=$LOG_PATH/mysql_$MYSQL_DB.log $MYSQL_DB >mysql_$MYSQL_DB.sql"
curl -s -w \n $HTTP_LOG_PATH/mysql_$MYSQL_DB.log | mail -s "Resultado export $MYSQL_DB" $MAIL_RCPT

}

remote_sync() {

lftp -c "set ftp:list-options -a;
open ftp://$FTP_USER:$FTP_PWD@$FTP_HOST;
lcd $LOCAL_PATH;
mirror --delete --verbose=3" > web_backup.log

cat web_backup.log | mail -s "Resultado sincronizacion" $MAIL_RCPT

}

SSH_USER=usuario
SSH_HOST=host.dominio.com
LOG_PATH=./mensajes
HTTP_LOG_PATH=http://dominio.com/mensajes
MYSQL_HOST=mysql.dominio.com
MYSQL_USER=usuario
MYSQL_PWD=password
MYSQL_DB=base_de_datos
MAIL_RCPT=usuario@dominio.com

mysql_export

FTP_HOST=ftp.dominio.com
FTP_USER=usuario
FTP_PWD=password
LOCAL_PATH=carpeta_local

remote_sync

Fuentes:

http://www.linuxproblem.org/art_9.html
http://serverfault.com/questions/24622/how-to-use-rsync-over-ftp
http://fal254.blogspot.com/2009/09/envia-correos-desde-tu-terminal-de.html

 

Liberar espacio tras la instalación del SP1 de Windows 7

Tras la instalación del Service Pack en Windows 7, podremos ver como la infame carpeta C:\Windows\winsxs ha crecido considerablemente. Gracias al siguiente comando, se puede liberar dicho espacio, ejecutándolo desde una línea de comandos con privilegios elevados, con el único inconveniente de que después no podremos desinstalar el Service Pack.

DISM /online /Cleanup-Image /SpSuperseded

Fuente: http://everythingsysadmin.wordpress.com/2011/03/16/cleanup-winsxs-after-windows-7-sp1-install/

Cómo grabar el audio que escuchas en Ubuntu

Seguro que alguna vez habrás necesitado grabar el audio de algo que estás reproduciendo, como por ejemplo un vídeo de Internet que no puedes descargar y que prefieres escuchar en otro momento y lugar.

Pues la solución es fácil, instalando el Control de Volumen de PulseAudio:

sudo apt-get install pavucontrol

Y después:

  1. Ejecutamos dicha utilidad, que la encontraremos en Aplicaciones -> Sonido y vídeo.
  2. Ejecutamos también el “Grabador de sonidos” y comenzamos a grabar.
  3. De nuevo en el Control de Volumen de PulseAudio, vamos a la pestaña “Grabación”, seleccionamos Mostrar -> Aplicaciones, y en “Record stream from” seleccionamos “Monitor of Audio interno…”.

Con esto ya podemos empezar a reproducir lo que queramos grabar. En principio esta configuración se guarda de manera permanente, con lo que cada vez que utilicemos el “Grabador de sonidos” se registrará cualquier cosa que esté reproduciendo el sistema.

Fuentes:
http://www.ubuntugeek.com/how-to-recording-internal-audio-in-ubuntu.html
http://ubuntuforums.org/showthread.php?t=1440833

Encriptando un pendrive en Ubuntu

Para comenzar encontré un interesante artículo en UbuntuSolutions, que me sirvió para hacerme una idea de cómo iba la cosa. Pero después descubrí que el proceso puede ser mucho más intuitivo, utilizando la “Utilidad de discos” que incluye Ubuntu. Por desgracia, y como de costumbre, la instalación de los paquetes necesarios hay que realizarla primero manualmente, ya que dicha utilidad simplemente falla al intentar encriptar un volumen si no disponemos de los mismos, sin dar opción a instalarlos forma automática.

sudo apt-get install cryptsetup cryptmount

Ahora ya sí podemos proceder con la “Utilidad de discos” que encontraremos en el menú Sistema -> Administración.

En mi caso cuento con un dispositivo de 2GB, de los cuáles quiero utilizar 1,8GB en una partición abierta FAT32, y el resto en una encriptada y ext4. La situación inicial es un pendrive vacío sin particionar, lo que podemos conseguir con la citada utilidad.

En primer lugar comenzamos creando la partición FAT32:

Quedando como sigue:

Después seleccionamos el espacio libre y pulsamos sobre “Crear partición”:

En este caso los datos serán los siguientes:

Tras esto, nos solicitará la contraseña con la que protegeremos la partición:

Con esto ya habremos terminado la configuración:

A partir de ahora, cuando pinchemos el pendrive, se montará automáticamente la partición FAT32, pero nos pedirá la contraseña para montar la encriptada. Si le decimos al gestor de contraseñas de Ubuntu que la guarde, ya nos podremos olvidar prácticamente de que ese espacio está protegido, pero en caso de perder esa memoria USB será complicado que accedan a la información que contiene.

Por lo que parece, según el artículo antes mencionado, también podríamos montar el pendrive en sistemas Windows utilizando la utilidad FreeOTFE. No lo he probado y, desde luego, en este caso también se haría difícil al haber formateado con ext4, para aprovechar esa opción deberíamos haber formateado también con FAT32 o con NTFS.

Cacharreando con lo retro

El sábado pasado tuve el placer de asistir a una reunión organizada por los mismos que llevamos a cabo RetroMallorca, pensada para sacarles el polvo a nuestras máquinas clásicas y darles algo de uso, aparte de disfrutar de las mejores conversaciones retro.

Para la ocasión opté por llevar el Atari 1040STFM y la Philips CD-i 210. A pesar de que poco pude disfrutar del Atari, debido a serios problemas con el modulador de vídeo, debo comentar que encontré una aplicación genial para pasar las imágenes de éste (.ST y .MSA) a disquetes físicos utilizando un PC actual con Windows (no he encontrado nada para Linux, aunque espero que exista algo).

En realidad encontré varias utilidades distintas, pero todas me dieron problemas a la hora de escribir imágenes de más de 720KB (el tamaño estándar para un disquete de doble densidad en un PC), pero en cambio con Floppy Image & file transfer program me funcionó de maravilla. Para utilizar el programa, hay que instalar el fdrawcmd.sys, un driver para la unidad de disco que sustituye al original de Windows, y que permite acceder a la misma para leer y escribir a bajo nivel. El único inconveniente es que la unidad no puede ser USB.

Por otro lado, también me ha venido de perlas la web Emuparadise.org, desde donde he descargado imágenes tanto de Atari ST como de CD-i.

Os dejo con algo de material visual del encuentro. La galería de fotos publicada por DaDMaN, y el siguiente vídeo de Juansa:

Conectando el iPhone a Ubuntu

Desde la versión 10.04, en teoría Ubuntu soporta de forma nativa la sincronización y acceso a los dispositivos iPhone. Pero ahora, si tienes tu terminal actualizado a la última versión (iOS 4.2.1), al conectarlo al PC te aparecerá un mensaje diciendo que no se ha podido montar el dispositivo.

Por suerte la solución es fácil, siendo suficiente con añadir el repositorio de Paul McEnery para que se actualicen una serie de paquetes. Para ello ejecutamos lo siguiente:

sudo add-apt-repository ppa:pmcenery/ppa
sudo apt-get update
sudo apt-get dist-upgrade

Con esto es suficiente para que vuelva a funcionar como es debido.

Fuente: http://www.fenrique.com/blog/2010/12/11/iphone-con-ios-4-2-1-en-ubuntu/

Cómo convertir un archivo de audio a MP3 en Ubuntu

En primer lugar, si no disponemos de los paquetes necesarios, ejecutaremos:

sudo apt-get install ffmpeg libavcodec-extra-52

El comando para la conversión es muy sencillo. En este caso convertimos un archivo WAV a MP3, con un bitrate de 128 Kbps y una frecuencia de sampleo de 44100 Hz:

ffmpeg -i archivo.wav -f mp3 -ab 131072 -ar 44100 archivo.mp3

Testeando una unidad Commodore 1541

¿Cómo comprobar una unidad 1541 antes de comprarla sin tener el cable serie correspondiente? Pues muy fácil: haciendo una ñapa de miedo.

El cable necesario termina en ambos extremos con un conector DIN de 6 pines. Sin llegar a encontrar documentado el “pinout” de este periférico, he optado por coger 6 cables normales y corrientes, pelar los extremos, y conectarlos uno a uno en el Commodore 64 y la 1541.


Tras probar con el tercer diskette de 5,25 pulgadas (los pobres llevaban en la caja más de 15 años) el resultado ha sido totalmente satisfactorio:

Ahora tocará construir el cable de verdad y, si hay tiempo, alguna variedad del X1541.

Optimizando Lubuntu para unidades SSD

Aunque estos cambios los he realizado en la instalación de Lubuntu en mi Aspire One, son válidos también para Ubuntu y supongo que para casi cualquier distribución de Linux (excepto la parte de modificación del lanzador de Chromium, exclusiva de LXDE).

El problema está, al menos en el caso del primer Aspire One, en la lentitud de la unidad SSD, que supone en ocasiones el bloqueo de algunas aplicaciones hasta que consiguen leer o escribir determinada información en el disco. En mi caso lo he notado sobre todo con el navegador Chromium.

La solución pasa por crear filesystems temporales en memoria RAM que contengan los archivos log y temporales del sistema, y la caché de Chromium. De esta manera se evitan muchísimos accesos al disco físico. El único inconveniente de este sistema es que la información contenida en estos filesystems se pierde al reiniciar el equipo, algo normalmente asumible.

En primer lugar, para implementar todo eso, añadiremos al fstab que las líneas que crearán los filesystems temporales:

sudo echo "tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0" >> /etc/fstab
sudo echo "tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0" >> /etc/fstab
sudo echo "tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0" >> /etc/fstab

Después modificaremos el lanzador de Chromium para que incluya un nuevo parámetro, donde se le indica la nueva ruta a utilizar para la caché:

sudo sed -i 's_/usr/bin/chromium-browser %U_/usr/bin/chromium-browser %U --disk-cache-dir=/tmp/chromium_' /usr/share/applications/chromium-browser.desktop

Por último, también podemos indicarle al kernel que haga menos uso del swap a disco y utilice más la memoria RAM, añadiendo una línea al archivo sysctl.conf:

sudo echo "vm.swappiness=10" >> /etc/sysctl.conf

Con esto ya sólo nos queda reiniciar el equipo para que todo surta efecto.

Fuente consultada: http://forums.auroraos.org/viewtopic.php?f=45&t=4238

RetroActivo – Donde recordamos los inicios

Hace unos meses tuve el placer de participar en la organización de RetroMallorca, una experiencia única en la que me encontré rodeado de gente que lo dio todo por algo en lo que creían, ya fuera por su afición al tema, por aprender cosas nuevas o simplemente porque les suponía un reto.

El mismo grupo de personas hemos puesto en marcha la iniciativa RetroActivo, un proyecto con el que pretendemos dar continuidad a la divulgación de la informática clásica y los videojuegos del siglo pasado, a través de distintas actividades.

La primera de ellas será RetroActivo Podcast, que comenzará su andadura el próximo sábado 13 de noviembre a las 19 horas. Como nota interesante, destacar que el podcast se realizará en directo y se podrá disfrutar tanto del audio como del vídeo mediante streaming en tiempo real, donde se nos observará “en acción”.

Por supuesto se podrá descargar el audio y visualizar el vídeo a posteriori, pero a todos los que podáis os esperamos el sábado a las 19h. en http://retroactivo.es/podcast.