6.3. Recuperación de datos¶
La recuperación de datos perdidos es, ciertamente, un asunto propio de la integridad de datos estudiada en la unidad dedicada al almacenamiento, pero que por motivos meramente relacionados con la evaluación[1] hemos reservado para esta unidad.
La recuperación de datos es obvio que deriva siempre de una pérdida previa, pero dependiendo de si se tomó alguna contramedida de seguridad activa y de cuál fuera la contramedida, se llevará a cabo de distinta forma:
En sistemas RAID (siempre que el fallo no sea irrecuperable, por supuesto) la recuperación de datos por la pérdida de un disco es automática en cuanto se conecta el sustituto.
Si se perdieron datos, pero existen copias de seguridad, no hay más que recurrir a estas, según el mecanismo que implemente cada herramienta particular.
Por último, si para la pérdida no hay contramedida ninguna, entonces aún puede intentarse la recuperación de los datos sobre el soporte original, para lo cual habrá que distinguir entre:
Fallos de disco, que derivan en la imposibilidad de la lectura.
Borrados accidentales.
Es a esta última circunstancia en la que no se previó mecanismo de salvaguarda de los datos, a la que está dedicado el texto del epígrafe.
6.3.1. Fallos de disco¶
Cuando un disco falla físicamente, todos los datos de la partición o del disco entero resultan inaccesibles. Hay dos casos:
Fallo completo de disco que lo dejan absolutamente inutilizado y que requieran la intervención de una empresa especializada en recuperación de datos.
Fallos parciales que afectan sólo a un número limitado de sectores. En estos casos, es posible recuperar toda o parte de la información por medios ordinarios, aunque la resolución depende de qué información contuvieran estos sectores:
Los sectores pueden almacenar información sobre el particionado de disco y en ese caso, las particiones serán inaccesibles y, en consecuencia, todos los datos que contengan, también. En estos casos, puede que valga con recuperar la copia (en particionado GPT) o quizás haya que hacer una inspección del disco con una herramienta especializada como testdisk para adivinar cuáles eran estas particiones.
Pueden ser sectores que almacenen metainformación de un sistema de archivos. En ese caso, habrá que recurrir a herramientas específicas de tal sistema de archivo como se ilustra en la recuperación del superbloque de un sistema ext4.
Por último, los sectores pueden contener información. En ese caso, el propio sistema de archivos proveerá de alguna herramienta para desechar esos sectores, aunque sea a costa de perder el archivo que contuviera. Véase como recuperarlos en ext4.
6.3.2. Borrados accidentales¶
Hasta el mejor escribano echa un borrón… Es común que por equivocación se borre algún archivo que, en realidad, no quisiéramos borrar. Para evitar estas situaciones los sistemas operativos suelen habilitar una «Papelera», esto es, un lugar en el que se almacenan los archivos borrados. Funciona más o menos del siguiente modo:
El archivo no es, en realidad, borrado del sistema de archivos, sino simplemente trasladado a un directorio oculto (la Papelera) en donde es almacenado.
El software asociado a esta función no se limita a trasladar el archivo, sino que:
Guarda la memoria de la ubicación original para que en caso de que se quiera recuperar el archivo, éste se encuentre allí donde se encontraba cuando se borró.
Mantiene la «Papelera» por debajo de un tamaño máximo configurable, de modo que, si es necesario para no sobrepasar este límite, borra definitivamente archivos tomando primero aquellos con una fecha de borrado anterior.
Por tanto, para recuperar el archivo no hay más que acudir a la «Papelera». Sin embargo, el borrado puede haber sido efectivo (bien porque se borró el archivo de la propia «Papelera», bien porque se fuerza su borrado sin pasar por esta, bien porque se usa la CLI), y entonces ¿hay forma de recuperar el archivo? La respuesta es «quizás»:
Cuando un archivo es borrado del sistema de archivos, sus datos (los bloques de disco asociados) no se sobrescriben de inmediato. Simplemente, se libera el espacio para que futuros archivos puedan ocupar esos bloques. Por tanto, si intentamos la recuperación del archivo antes que estos bloques vuelvan a ocuparse, podremos obtener de nuevo el archivo. Así pues:
Se requerirá una herramienta especializada en buscar el archivo borrado en los metadatos del sistema de archivos:
- FAT32
Kickass Undelete (Windows).
- NTFS
ntfsundelete (del paquete ntfs-3g).
Kickass Undelete (Windows).
- EXT4
La recuperación será tanto más probable cuantas menos operaciones de escritura se hayan hecho desde el borrado del archivo. A este efecto, es muy útil que los datos de usuario se almacenen en una partición distinta a la del sistema operativo, puesto que la herramienta no suele estar ya instalada y su instalación requiere escribir en disco. Si las particiones están separadas, la instalación no implicará ninguna operación de escritura sobre el sistema de archivos del que queremos recuperar archivos.
6.3.3. Ejercicios de recuperación de particiones¶
En una máquina virtual cree un disco de 50GiB, arranque con la ISO de Gparted y:
Haga las siguientes particiones DOS:
Una partición de 10GiB para un sistema que corre Linux.
Una partición de 10GiB para datos de Linux, pero con XFS.
Una partición lógica de 3 GiB formateada en FAT32.
Una partición lógica para Windows 7 que ocupe el resto..
Cree un fichero en cada una de esas particiones con el texto que usted estime oportuno.
Recuerde la tabla de particiones creada.
Nota
Lo más adecuado es que recurra a la terminal y usando un fdisk la guarde en un fichero de texto. Recuerde que puede consultar la tabla de particiones con esta orden mediante:
# fdisk -l /dev/sda
Elimine la tabla de particiones. Como la tabla de particiones se guarda en el MBR, basta con que rellene con ceros ese primer byte:
# dd < /dev/zero > /dev/sda bs=512 count=1
Compruebe que ya no hay particiones en el disco.
Utilice testdisk para recuperar la tabla de particiones.
Compruebe de nuevo la tabla de particiones. ¿Es la misma?
Monte los cuatro sistemas de archivos y vea si se encuentra el fichero y su contenido. ¿Ha sobrevivido la información?
Nota
El primer paso puede justificarlo mediante una captura del resultado obtenido en Gparted. Para las restantes puede copiar las órdenes en línea usadas.
Haga lo mismo, pero utilizando particionado GPT. En este caso, tenga en cuenta lo siguiente:
Como el particionado es GPT utilice gdisk en vez de fdisk.
Al eliminar la tabla de particiones:
Pruebe primero a borrar exclusivamente la tabla de particiones y no los dos primeros bytes. ¿Qué ocurre?
Borre también estos dos primeros bytes. ¿Queda aún información sobre las particiones en algún sitio? Prueba a ver si gdisk es capaz de rehacer las particiones.
Notas al pie