Recuperación rápida y fiable de ficheros borrados en particiones ext3 y ext4

Éste es un clásico, lo sé, pero según pasan los años conviene actualizar las recetas que nos pueden salvar la vida después de un “rm -rf”.

La clave es encontrar un live CD con GNU/Linux para arrancar el equipo y conocer qué herramienta tiene más probabilidades de recuperar los ficheros perdidos, con sus nombres originales, manteniendo toda la estructura de directorios.

Mi recomendación es clara; ni systemrescuecd, ni Ubuntu Rescue Remix, ni Finnix, ni nada… directamente el Live CD de ArchBang (http://archbang.org/). Basada en la distribución Arch, ArchBang es liviana y, lo más importante, permite instalar la última versión de la herramienta de nuestros sueños, ext4magic (http://developer.berlios.de/projects/ext4magic/), sin tener que compilar o temer segmentation faults.

Así pues, los pasos son:

  • Apagar el equipo dañado inmediatamente. Cuanto más tardéis, más probabilidad de pérdida irreversible de datos tendréis.
  • Arrancar con el LiveCD de ArchBang en modo 32 bits para mayor seguridad. Podéis pasarlo a un USBLive, claro, pero es posible que en mitad del arranque se pierda la referencia al dispositivo y acabéis en un initramfs insulso. Depende bastante de tu hardware. El LiveCD funciona sin problemas.
  • Dado que ArchBang arranca en modo gráfico, id a una consola CTRL+ALT+F1 y ejecutad “passwd” para poner contraseña a root. También podéis hacerlo con “sudo passwd root” en un terminal virtual en el entorno gráfico. Convertíos en root.
  • Ejecutad “pacman -Syy” para actualizar listado de paquetes.
  • Ejecutad “pacman -S ext4magic”
  • (Opcional) Si tenéis dispositivos en RAID, ejecutad

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

y confirmad que los dispositivos están detectados con “cat /proc/mdstat”. Es posible que no coincidan los nombres mdX con los que manejáis en vuestro entorno de ejecución. Lo importante es que sepáis cuál es cuál. Mi /dev/md0 pasó a ser /dev/md124 pero el resultado es el mismo.

  • Montad un dispositivo de almacenamiento externo como un disco USB o una partición de un disco independiente de la afectada y colocaos allí.
  • Ya sea una partición tipo /dev/sda3 o un dispositivo raid tipo /dev/md0,  ejecutad “ext4magic /dev/XXX -r -d DIRECTORIO” donde XXX se sustituye por sda3, md0, etc. Este comando recuperará desde el directorio raíz del dispositivo, todo fichero borrado en las últimas 24 horas y lo almacenará, respetando la estructura original de directorios en el directorio DIRECTORIO.
  • Si queréis saber lo que es recuperable antes de tratar de recuperar, podéis ejecutar antes “ext4magic /dev/XXX -l -d DIRECTORIO”.
  • ext4magic tiene muchas opciones y todas están bien descritas en http://openfacts2.berlios.de/wikien/index.php/BerliosProject:Ext4magic

Mi consejo es que un día que estéis ociosos, juguéis a borrar cinco o seis ficheros en una partición de prueba y luego tratéis de recuperarlos usando este sistema. Por supuesto, hacer copias de seguridad es la mejor prevención porque ext4magic no garantiza ningún resultado. Otros programas que probé, como extundelete, eran complicados de hacer funcionar, parecían algo abandonados y daban fallos. Photorec es útil si no te importa que todos tus ficheros recuperados pierdan sus nombres originales y la estructura de directorios, de ahí que pieda valer para fotografías, ya que los metatados son casi más valiosos que el nombre en sí.

Espero que esto sirva a alguno a no perder horas probando todas las posibles combinaciones.

Python y redireccionar utf-8 a un fichero

Un problema recurrente en python son los problemas con el encoding y concretamente uno de ellos es el problema de redireccionar la salida a un fichero.

Es bastante habitual escribir a la salida estándar información  y cuando esta es demasiada para verla o analizarla a simple vista, es muy normal redirigir la salida a un fichero, y entonces BOOM, todo explota. Veamos un ejemplo:

Creo un fichero, que vamos a llamar utf-8.py y que contiene:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
print u"¡Hola mundo!"

Al ejecutarlo normalmente “python utf-8.py”, obtenemos como resultado, lo esperado ¡Hola mundo!, pero si lo redirigimos a un fichero “python utf-8.py > /dev/null” casca nuestra aplicación.

Traceback (most recent call last):
  File "utf-8.py", line 3, in <module>
    print u"¡Hola mundo!"
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)

Esto se debe a que python por defecto abre sus ficheros por defecto con codificación ascii, y por tanto, al abrir el fichero al que intentamos redirigir lo abre con codificación ascii, que no entiende los caracteres utf-8 que le hemos pasado (en este caso el carácter ¡).

Bien, una vez entendido cual es el problema, la solución es fácil, hay que decirle a python con que encoding por defecto se tienen que abrir los ficheros, y esto se hace a través de la variable de entorno PYTHONIOENCODING.

export PYTHONIOENCODING=utf-8
python utf-8.py > /dev/null

Y todo va perfectamente.

Cortes de Spotify en Ubuntu (instalado por Wine)

A mí también se me bloqueaba Spotify después de un cierto tiempo funcionando con normalidad, hasta que cambié un ajuste sencillo de audio en Wine…

Desde Ubuntu aceder a la configuración de wine y cambiar lo que sigue:

Menu/Aplicaciones/Wine/Configurar Wine:

  • Pestaña “Audio”:  Controlador Alsa (Desactivado) y Conrolador EsounD (Activado.
  • Pestaña “Aplicaciones”: Versión a Imitar:  “Windows XP”
“Aplicar” y listo.

Espero que os sirva, hasta que Spotify se digne a sacar una versión para Linux, y usuarios “No premium”.

Referencias:

http://crashbit.homelinux.com/node/1756

http://www.ubuntu-es.org/node/124169

Configurar Redmine en una sub-URL

Redmine por defecto está preparado para ser servido desde http://redmine.midominio.com (o similar). Puede que nos interese instalarlo en http://www.midominio.com/redmine. Después de mirar varios tutoriales, foros y probar mil opciones, logré dar con la solución:

  • Instalar mod_passenger para apache
    # apt-get install libapache2-mod-passenger
  • Habilitar el módulo
    # aenmod passenger
  • Añadir al virtual host las dos últimas líneas
         
    <VirtualHost *:80>
         ServerName subdominio.midominio.com
         DocumentRoot /home/user/application/
    
         ErrorLog /var/log/apache2/application.log
         LogLevel warn
         CustomLog /var/log/apache2/application-access.log combined
         DirectoryIndex index.php
    
         # Para servir el redmine
         RailsBaseURI /redmine
         RailsEnv production
    </VirtualHost>
    
  • Crear un enlace simbólico desde DocumentRoot/redmine a la ruta de instalación de redmine
    # ln -s /home/user/redmine-1.1.1/public /home/user/application/redmine
  • Reiniciar apache y listo, ya podemos acceder a redmine desde http://www.midominio.com/redmine
  • Instalar flash player en linux de 64 bits

    Lamentablemente, Adobe por ahora no tiene un reproductor de flash oficial compilado nativamente en 64 bits. Si tenemos un Linux de 64 bits y queremos ver vídeos flash en nuestro navegador, la solución que recomiendan es instalar el flash player de 32 bis, “envuelto” en un producto llamado ndiswrapper, pero esta solución no es muy buena: aparte de que nos perdemos la ventaja del rendimiento de 64 bits, el ndiswrapper no es demasiado estable.

    Sin embargo, existe otra opción: en realidad sí que hay un reproductor de 64 bits, lo que pasa es que aún está en estado beta, pero funciona aceptablemente bien. Se llama Flash Player “square”. Para instalarlo, seguir los siguientes pasos. Yo lo he probado en Ubuntu, pero en otras distribuciones será parecido:

    1) Cerrar cualquier navegador que tengamos abierto.

    2) Eliminar cualquier flash player que haya actualmente. Desinstalar con –purge cualquier paquete llamado flashplugin-installer o similar. Asegurarse de que no existe ningún libflashplayer.so en /usr/lib/mozilla/plugins. Si queremos estar seguros del todo, podemos ejecutar el siguiente comando para ver si hay algún flashplayer en el sistema (y esperar un buen rato mientras busca).

    find / -name “*flashplayer*”

    3) Ir a Adobe FlashPlayer “Square” y descargar el paquete (ver enlace “Download Flash Player “Square” y luego “Download plug-in for 64-bit Linux (TAR.GZ, 4.1 MB)”).

    4) Abrir el paquete, extraer libflashplayer.so y moverlo a /usr/lib/mozilla/plugins.

    Luego ya podemos abrir el firefox, por ejemplo, introducir about:plugins en la barra de direcciones y ver si ha detectado un plugin Shockwave Flash versión 10.3. Los otros navegadores, por ejemplo, Chrome, también reconocen el plugin si está instalado en ese mismo sitio.

    Comandos de linux poco conocidos: “yes”

    De vez en cuando, uno tiene que realizar un proceso que requiere contestar a un montón de preguntas por consola. Por ejemplo, en un proyecto de grails, cada vez que regenerabamos mediante scaffolding, teníamos que aceptar que reemplazase cada una de las clases del proyecto. Este proceso de repetir una y otra vez “y” ENTER, “y” ENTER, “y” ENTER puede llevarte rápidamente hasta la locura, a si que aquí va una ayuda.

    En linux tenemos el comando “yes”. Si se ejecuta sin parámetros, escribirá una linea con una “y” por pantalla hasta el infinito. Si se ejecuta con un parámetro, escribirá las lineas con ese parámetro.

    Por lo tanto para lanzar un comando, y responder con una “y” a todas las preguntas basta con hacer

    yes | comando

    Y para responder con una “s”, por ejemplo:

    yes s | comando

    Happy coding! :)

    Arreglar teclado en Linux (guest) al usar VirtualBox 3.1

    En la versión 3.1 de VirtualBox OSE parece que hay un problema serio en el que el teclado deja de funcionar tras instalar las Guest Additions. El problema reside en la configuración de las X y parece que se hace notar más en sistemas SLED u OpenSuse pero hay indicios de que puede suceder en otras distribuciones de Linux.

    Los pasos son muy sencillos:

    1. Lo primero es arrancar en modo consola para realizar login usando el teclado. Lo más rápido es editar el menú de GRUB en caliente tras iniciar la máquina virtual y seguir las instrucciones de este enlace: http://www.brunolinux.com/05-Configuring_Your_System/Grub_boot_runlevel-3.html cambiando el 3 por un 2 para evitar algún problemilla con distribuciones en donde el nivel de ejecución 3 no está definido.
    2. Tras hacer login como root, vamos a /etc/X11 y copiamos algún fichero de backup de xorg.conf que encontremos. Normalmente habrá algún fichero como xorg.conf.bak. Un simple cp xorg.conf.bak xorg.conf bastará.
    3. A continuación editamos el fichero /etx/X11/xorg.conf y lo modificamos de la siguiente forma.

    Añadir Option "CoreKeyboard" en la sección InputDevice de Keyboard[0]

    Añadir Option "CorePointer" en la sección InputDevice de Mouse[1]

    Añadir Option "SendCoreEvents" en la sección InputDevice de Mouse[2] (puede ser Mouse[3])

    Renombrar la opción  Device en la sección InputDevice de  Mouse[2/3] a /dev/vboxguest

    Luego ya sólo resta reiniciar las X con algo del estilo /etc/init.d/xdm restart o /etc/init.d/gdm restart y todo debería volver a la normalidad.

    Firefox sin flash en Ubuntu 9.04, solución

    Si has llegado hasta aquí, es por que no tienes flash en la nueva distribución de Ubuntu 9.04…Y has dado unas cuantas vueltas instalando la librería de flash de adobe etc, pero sigue sin funcionar.

    La nueva distribución traia en los paquetes de origen, librerias alternativas a las propietarias de Adobe para flash. Esto es un paso de confianza importante para el desarrollo Open Source, pero y después de un poquito de chapa no funcionan como es debido.

    Después de dar una cuantas vueltas visto documentación, llegué a una solución no sin antes pasar por instalar y desinstalar paquetes de allí para acá.

    El problema al parecer lo tenemos en esta librería:

    /usr/lib/swfdec-mozilla/libswfdecmozilla.so

    A la que apuntan, como enlace simbolico desde algunas de estas aplicaciones.

    /usr/lib/firefox/plugins/flashplugin-alternative.so
    /usr/lib/iceape/plugins/flashplugin-alternative.so
    /usr/lib/iceweasel/plugins/flashplugin-alternative.so
    /usr/lib/midbrowser/plugins/flashplugin-alternative.so
    /usr/lib/mozilla/plugins/flashplugin-alternative.so
    /usr/lib/xulrunner/plugins/flashplugin-alternative.so
    /usr/lib/xulrunner-addons/plugins/flashplugin-alternative.so

    (puede ser que no tengas todas las aplicaciones)

    La solución final en principio es sencilla, pero puedes desquiciarte un poco si no consigues saber que está pasando si ya has limpiado varias veces el directorio /home/mi_home/.mozilla/plugins y /usr/lib/mozilla/plugins cuando todavía ves que sigue sin funcionar.

    Bien, se trata de desinstalar el paquete libswfdec-x.x-x que supuestamente tengamos instalado en nuestro sistema, y que vendrá por defecto. Una buena forma de buscarlo y hacer esto es a través del Gestor de paquetes, rapido y comodo.

    Una vez que tengamos desinstalado el paquete, vamos a la página de adobe, y nos bajamos el ultimo plugin de flash o desde este enlace http://get.adobe.com/es/flashplayer/ (alguno esto ya lo habrá hecho y lo tendrá en local) nos bajamos el .tar.gz NO el .deb… Descomprimimos el paquete de adobe con el plugin, y copiamos con “cp” la librería “libflashplayer.so” de dentro de la carpeta en los directorios /home/mi_home/.mozilla/plugins y /usr/lib/mozilla/plugins

    Reiniciamos Firefox, y ya funcionaría ;)

    Error de Amarok2 en Ubuntu 9.04

    Amarok2 utiliza el nuevo sistema de sonido de kde “phonon”. En varios ordenadores hemos tenido el mismo problema: Al arrancar sale un mensaje que dice algo similar a “The audio playback device Intel ICH5 with CMI9761A+ (Intel ICH5) does not work. Falling back to default”.

    Solución:

    Instalar los siguientes paquetes:

    #apt-get install systemsettings pulseaudio phonon-backend-xine

    Ejecutar systemsetings. Ir a Multimedia

    En la pestaña Backend, elegir xine

    En la pestaña DEvice Preference, en Audio Output/Musimarcar Pulseaudio, y comprobar que funciona pulsando el botón Test. Si es así, subirlo al primero de la lista con el botón Prefer, y aplicar los cambios con Apply

    La siguiente vez que arranques Amarok, todo debería funcionar estupendamente :)

    Solución problema sonido en Skype con Ubuntu 8.10 Intrepid Ibex

    Existe un problema con el sonido en Skype con Ubuntu 8.10 Intrepid Ibex.

    (Solved sound or audio problem in Skype)

    Siento no poder proveer la url de la que saqué la información, pero la solución es configurarlo como aparece en la imagen:

    skype-opciones

    Parece ser un problema de incompatibilidad entre disposivos de audio.

    Seguir

    Get every new post delivered to your Inbox.