lunes, 3 de enero de 2011

Recuperar archivos borrados en Linux

Hay veces en las que borramos archivos accidentalmente. Normalmente tenemos la papelera de reciclaje como red de protección para no perder definitivamente esos archivos, pero a veces borramos con shift+supr o desde consola (rm -f ....) y de esa forma los ficheros no van a la papelera. ¿Qué hacemos en este caso?

Lo primero es conservar la calma, hay muchas posibilidades de que recuperemos dichos archivos o al menos gran parte de ellos.

Cuanto antes debemos dejar de utilizar la partición en la que hemos eliminado los archivos. Cualquier escritura posterior a la eliminación de esos archivos podría escribir donde antes estaban nuestros archivos, lo que nos impediría recuperarlos.


Si es la partición raíz, tendremos que apagar y posteriormente arrancar con un livecd o montar nuestro disco desde otro ordenador. Si es otra partición, como por ejemplo la /home, únicamente tendremos que desmontarla. Para poder desmontar la partición primero tenemos que dejar de utilizarla. En el caso de la /home, implica para las X Windows (gdm,kdm,... según el caso) . Para ello pulsamos ctrl+alt+F1 y entramos en una consola como root. Después escribimos,

/etc/init.d/gdm stop
umount /home

Ahora es cuando realmente empieza la tarea de recuperación. Tenemos diversas opciones como extundelete, magicrescue, foremost,... Mi consejo es que primero lo intentes con extundelete, ya que recupera incluso el sistema de directorios borrado. Si extundelete no nos recupera los ficheros deseados, habría que meterse en un análisis en profundidad del disco con magicrescue y/o foremost.
 

extundelete

 

Esta opción sólo te vale si tu sistema de ficheros es ext3 o ext4. Puedes descargarlo desde su página oficial. También puedes ir directamente al área de descargas.

Una vez descargado, descomprimimos el tar.bz2

tar -xjvf extundelete-0.2.0.tar.bz2

Para instalarlo necesitarás tener instalado los paquetes e2fslibs-dev y build-essential. Si necesitas instalarlos, puedes usar el siguiente comando (en Debian y Ubuntu):

aptitude install e2fslibs-dev build-essential

A continuación hay que compilar e instalar extundelete. Para ello:

cd extundelete-0.2.0
./configure
make

Ahora puedes ejecutar el comando extundelete que se ha generado en el directorio src

src/extundelete --help

Si quieres instalarlo para poder ejecutarlo como cualquier otro comando del sistema, es decir, escribiendo extundelete desde cualquier directorio, deberás ejecutar make install aunque no es necesario.

Puedes usar la opción --restore-file si tienes claro el fichero que has perdido, pero si son varios ficheros o es un directorio, creo que lo más cómodo es ejecutar lo siguiente:

src/extundelete /dev/sda2 --restore-all

donde /dev/sda2 es la partición donde se encuentran los ficheros eliminados.

Los ficheros recuperados se guardan en un directorio dentro del directorio actual llamado RECOVERED_FILES. Tan sólo tienes que entrar en ese directorio y ver si tus ficheros perdidos se encuentran entre los recuperados.

magicrescue


Este programa escanea byte a byte la partición deseada en busca de patrones de ficheros o, como dicen en su página, bytes mágicos. Los patrones o recetas son ficheros que están en un directorio, típicamente en /usr/share/magicrescue/recipes/ y son los siguientes:
  • avi
  • canon-cr2
  • elf
  • flac
  • gimp-xcf
  • gpl
  • gzip
  • jpeg-exif
  • jpeg-jfif
  • mp3-id3v1
  • mp3-id3v2
  • msoffice
  • nikon-raw
  • perl
  • png
  • ppm
  • zip
De esta forma, podemos indicarle al programa que busque sólo ciertos tipos de ficheros.

magicrescue lo podemos encontrar en los repositorios de muchas distribuciones linux. Por ejemplo, para instalarlo en Debian o Ubuntu basta ejecutar lo siguiente:

aptitude install magicrescue

Para lanzar una búsqueda debemos ejecutar:

magicrescue -d DESTINO_FICHEROS_RECUPERADOS -r /usr/share/magicrescue/recipes/RECETA DISPOSITIVO

Por ejemplo, si hemos perdido nuestras fotos de algún viaje, podemos indicarle la receta jpeg-exif, que es el formato en que suelen guardar las fotos las cámaras digitales:

magicrescue -d /root/recuperados -r /usr/share/magicrescue/recipes/jpeg-exif /dev/sda2

También podemos indicarle varias recetas repitiendo el parámetro -r, o indicarle todas las recetas disponibles si en lugar de un fichero de recetas concreto indicamos el directorio de recetas.

Este programa no recupera los directorios ni nombres de fichero originales, por lo que una vez ejecutada la instrucción de recuperación, tendremos que buscar nuestros ficheros en el directorio donde hemos almacenado los ficheros recuperados.

 

foremost

 

Es similar a magicrescue, pero trae recetas diferentes. Podemos descargarlo de su página oficial, pero al igual que magicrescue, podemos encontrarlo en los repositorios de muchas distribuciones linux. Por ejemplo, para instalarlo en Debian o Ubuntu:

aptitude install foremost

La sintaxis es similar a magicrescue aunque en lugar de trabajar con recetas, trabaja con tipos de archivos. Las opciones son:
  • jpg
  • gif
  • png
  • bmp
  • avi
  • exe
  • mpg
  • wav
  • riff
  • wmv
  • mov
  • pdf
  • ole
  • doc
  • zip
  • rar
  • htm
  • cpp

    foremost -o DESTINO_FICHEROS_RECUPERADOS -t TIPOS_SEPARADOS_POR_COMA -i DISPOSITIVO

    Por ejemplo, si queremos buscar imágenes jpg y png:

    foremost -o /root/recuperados -t jpg,png -i /dev/sda2

    Al igual que magicrescue tampoco recupera directorios ni nombres de ficheros.

    No volverá a ocurrir

     

    Por supuesto, llegados a este punto ya nos habremos repetido mil veces que esto no me puede volver a ocurrir, que tengo que hacer más copias,... A continuación expongo una serie de buenas prácticas que nos pueden ayudar a evitar este tipo de desastres:

    • Forzar a que los comandos peligrosos como rm, mv y cp pidan confirmación. Para ello tenemos que añadir en el .bashrc de los usuarios que utilicemos lo siguiente:
    alias rm='rm -i'
    alias cp='cp -i' 
    alias mv='mv -i' 
    • Nunca hacer borrados del tipo rm -rf * : normalmente esto lo hacemos para vaciar el contenido de un directorio y para ello previamente hemos hecho un cd DIRECTORIO , pero hay veces que o bien el ese cd no lo hemos hecho adecuadamente o simplemente no lo hemos hecho y con las prisas borramos lo que no deberíamos. Una alternativa a ese rm peligroso es hacer el borrado desde un directorio superior o con rutas absolutas, de forma que el wildcard no sea tan generico. Por ejemplo:
    rm -rf DIRECTORIO/*

    • Y no menos importante, pensar dos veces antes de pulsar Intro en los comandos peligrosos.

    Y por supuesto, tener backups más o menos actualizados de nuestra información sensible por si las buenas prácticas anteriores no han evitado el desastre.

    Espero que este post te haya sido de utilidad y que, si has borrado accidentalmente algún fichero importante, ahora puedas respirar tranquilo.

    ;-)

    1 comentario:

    PosicionamientoBuscadores.cl dijo...

    A mi me ha funcionaddo muchas veces utilizar el UBUNTU en versión LIVE CD para ver datos de disco duros que en windows no se podían visualizar por daños en algunos sectores del disco.


    recuperacion de datos
    posicionamiento web