Terrible tragedia para ImoqLand (pérdida de datos en partición ext3)

(Este post es largo, técnico y hasta tedioso, así que siéntete libre de no leerlo si te aburren las cosas técnicas :P).

Tal vez alguien se dio cuenta, tal vez no, pero a partir de ayer a las 19:30 (sí, esa hora exactamente) cuando intentaron acceder www.imoqland.com les salió un mensaje que decía «File Not Found» (No se encontró el archivo). Poco después de las 22:30 seguramente el mensaje fue «Connection Refused» (Se rechazó la conexión) y no fue sino hasta alrededor de las 7 de la mañana del día de hoy en que pudieron volver a acceder el sitio pero, ¡oh, sorpresa! sin fotos, mismas que se han ido agregando en el transcurso del día.

A continuación relato qué sucedió y al mismo tiempo pido ayuda en caso de que a alguien más se le pueda ocurrir una solución para recuperar archivos borrados de una partición ext3, pues de entrada la información oficial al respecto es que es imposible recuperar archivos borrados. (Ver la pregunta «Q: How can I recover (undelete) deleted files from my ext3 partition?«).

ImoqLand está albergado en un servidor que administro y comparto con otros amigos y empresas aquí en Cuernavaca pero que se encuentra físicamente a miles de kilómetros de aquí y alberga decenas de sitios web. Hasta el año pasado, había dos servidores que rentábamos para tal fin los cuales tenían procesador Celeron, discos duros IDE y nada extraordinario. Decidimos el año pasado migrar los sitios web (con sus consabidos usuarios, configuraciones, etc.) a un solo servidor Intel Dual Xeon con discos duros SCSI, un montón de RAM y otras monerías el cual era capaz de albergar todos los sitios de los dos servidores previos, y muchos más. Al migrar la configuración de las cuentas de ambos servidores, obviamente algunos UID de los usuarios en el archivo /etc/passwd «se empalmaban» por lo que fue necesario cambiarlos para que no hubiera ningún problema. Lo mismo sucedía, obviamente, con algunos GID y también se trató de corregir el problema cambiándolos. Frase clave «se trató» pero por un grave descuido de mi parte, mi propio usuario en el servidor («imoq») quedó con el mismo GID que el de un cliente, quien maneja una buena cantidad de cuentas en el servidor. Afortunadamente ninguna otra cuenta parecía tener ese problema, tan sólo la mía. Qué suerte (léase en el tono más triste posible).

Para que algunos usuarios administren sus cuentas, he instalado el Webmin y dado accesos (totalmente restringidos y con todas las normas de seguridad, por supuesto) a dichos usuarios. Pues bien, el cliente en cuestión que tenía muchos usuarios, que además compartía el GID con «imoq» y que tenía permisos por webmin para hacer lo que se le diera la gana con los usuarios de ese mismo GID decidió hacer una depuración de sus usuarios antiguos y en un temerario borrado de 55 usuarios «que ya no existían o no debían estar ahí» borró también, por supuesto, a imoq. 14 GB de archivos incluyendo (pero no limitándose) a mi sitio web ImoqLand, archivos de estadísticas, mi correo electrónico que llevo guardado por años (pues no «bajo» los mensajes por medio de pop3 sino que utilizo IMAP para así tener acceso a ellos desde cualquier computadora) y muchas otras cosas más. Así de simple el webmin ejecutó un «rm -fr /home/imoq» y adiós todo.

Como lo mencioné anteriormente, eso sucedió a las 19:30 de la tarde y me di cuenta de eso a las 22:00 aproximadamente, es decir, unas dos horas y media después. Puesto que mis archivos estaban en la partición /home y ese filesystem generalmente no está muy ocupado en el servidor (a diferencia de /var/spool/mail, por ejemplo) inmediatamente lo desmonté para que no se siguiera escribiendo ahí y me diera tiempo de investigar si había alguna manera de recuperar los datos eliminados. Como también lo mencioné ya, el sistema de archivos es tipo ext3 y lo que encontré en la web en literalmente cientos de páginas que vi hasta aproximadamente la una de la mañana es que no hay una manera sencilla (duh!) de recuperar los archivos y que mejor los des por perdidos y los saques de un respaldo.

¡Respaldo! Por supuesto que existe, ¿verdad?. Sí y no. O más bien, «sí a medias». La base de datos de ImoqLand (que es la que contiene toda la información de los posts, comentarios, configuración de los módulos y en resumen toda la información dinámica del sitio) se encuentra en otro filesystem por lo que ésta no se vio afectada (además de que ésa sí tiene respaldos periódicos, etc.). Pero, seamos honestos, respaldar 14 gigas de información personal de un servidor que se encuentra físicamente a miles de kilómetros de aquí tampoco resulta lo más sencillo y al tiempo tampoco me pareció lo más prioritario. Busqué entre los respaldos que tengo aquí en mi computadora personal y encontré uno de hace poco más de 2 meses, exactamente del 15 de noviembre de 2006 en el que se encuentra exclusiavamente todo mi directorio «www», es decir, los archivos del sitio (los PHP, HTML, etc.) y principalmente lo que más abunda y «pesa» en ImoqLand: las fotos, sumando todo «tan sólo» 4.4 GB. Algo es algo.

El tiempo transcurría y quedaban sólo unas horas para amanecer. Los servicios seguían apagados y la partición /home desmontada por lo que al menos no iba a haber más pérdida de datos. Aparentemente existen 2 programas comerciales (éste y otro que ya no recuerdo cuál es, pero sí lo vi) que te hacen «la maravilla» de recuperar archivos ext3 borrados «accidentalmente» (ellos juran, je, habrá que ver si es cierto) pero tienen un pequeño detalle: sólo funcionan bajo Windows (!!!) y debes conectar tu disco duro del que quieras recuperar tus archivos a la misma máquina y desde ahí hace el proceso. Sólo que, como ya todos saben, ¡EL DISCO DURO ESTÁ A MILES DE KILÓMETROS! Y, además, en pocas horas los clientes iban a empezar a consultar otra vez sus páginas, etc., por lo que los servicios no podían continuar apagados para entonces.

Seguí buscando y la única solución viable aparente fue tratar de utilizar lo que se conoce como «data carving» (algo así como «excavar datos») por medio de un programa llamado foremost el cual bajé, compilé, configuré y utilicé diciéndole que leyera /dev/sdb1 (la partición con mis datos borrados) y que lo que pudiera recuperar lo pusiera en /dev/hdc1 (otra partición con algo de espacio libre) y después de unos momentos… ¡felicidad! algunos de los archivos de texto (lo que más me duele y me importa son mis correos electrónicos de tantos años) fueron apareciendo aunque con nombres harto extraños (algo así como «03132400.mailbox» por ejemplo).

Era demasiado bello para ser verdad. El programa me empezó a crear literalmente cientos de archivos de la longitud que yo le especificaba (10 MB como máximo) conteniendo la mayoría de ellos los buzones (mailbox) de mi preciado correo, sí, pero continuando indefinidamente hasta llegar a 10 megas, momento en que truncaba el archivo e iniciaba con otro. Muchos correos se repetían, todo estaba desordenado y no vi manera alguna de sacar algo de proveho de ahí (después de algunos minutos tenía más de 10 GB de archivos sin pies ni cabeza). Seguramente es un error mío de configuración del foremost (¡AQUÍ ES DONDE PIDO AYUDA, SI ALGUIEN LO HA UTILIZADO O SABE CÓMO HACERLE! y no, no todo está perdido porque ya se ha escrito en esa partición, en un momento lo explico) pues lo que utilicé en el archivo foremost.conf fue lo siguiente (pongo sólo la línea relevante, por supuesto):


mailbox y 500000 From\s \x0a NEXT

Lo que trataba de decirle, era que los archivos que iniciaran con «From » (las cuatro letras de from y un espacio en blanco) y que terminaran con una línea en blanco (ése es el hexadecimal 0a, también intenté 0d y hasta 00) justo antes de otro «From » los pusiera en un archivo. Evidentmente algo hice mal y no fue así.

Las horas no me perdonaban y ya iban a dar las 4 de la mañana, así que en un instante de lucidez hice lo que debí haber hecho desde el principio… ¡primero copia y después virigua (sic)!. Pues claro, en otra partición había suficiente espacio para guardar todo el contenido de la partición con la información borrada, así que un certero:


dd if=/dev/sdb1 bs=65536 |gzip -c > /home2/recover/disco1.img.gz

(el cual se completó un poco después de las seis de la mañana, terminando con un archivo de 43 GB, thank you very much) me permitió tener esa partición tal y como la encontré a las 22:00 del día anterior, pero al mismo tiempo me permitió ya montarla e iniciar todos los servicios que habían durado apagados durante la noche (httpd, sendmail, ftp, entre varios otros).

Entonces… ésa es mi tragedia. Aún a miles de kilómetros tengo un archivo de 43 GB que eventualmente podré bajar a mi computadora, montar en una partición de aquí y tratar de averiguar cómo diantres «desborrar» o recuperar mi valiosa y preciada (tan sólo para mí, fueron sólo datos personales y algunos de trabajo) información.

Paralelamente a lo anterior, fui subiendo mi respaldo del directorio www/ que tenía en mi máquina local y por eso ImoqLand vuelve a estar arriba… sin imágenes. O bueno, con una que otra imagen apareciendo de repente (mientras se sube, pero apenas está arriba 1.1 GB de 4.4 GB totales, ¡gracias conexión de Infinitum de subida de tan sólo 128 kbps ¬¬). Supongo que para pasado mañana ya estarán arriba todas las imágenes y entonces deberé solamente cargar las fotos que había subido desde el 15 de noviembre en adelante, que realmente tampoco son tantas y que supongo que puedo hacerlo en un par de horas a lo mucho. Ya sabes, si ves ImoqLand «raro» es por todo eso :P.

¿Por qué escribo sobre mi tragedia? Por varias razones, supongo. Primero, me gusta el drama (¡claro! ¿a poco no lo habías notado?). Ja, ya en serio, primordialmente para que si alguien que tenga idea de alguna técnica que no he probado ya para recuperar mi información pueda ayudarme me lo haga saber. También, supongo, para que yo mismo recuerde per secula seculorum que debo tener respaldos actualizados AÚN DE MI INFORMACIÓN PERSONAL y que los archivos de los clientes no lo son todo, mis propios archivos también tienen valor :(.

Obviamente he dormido un poco menos que nada. Afortunadamente los síntomas del resfriado han disminuído aunque aún no estoy del todo bien. Tengo un montonal de trabajo pendiente que no he podido hacer por estar arreglando esto, y bueno, en resumen todo es un desastre pero supongo que la pesadilla terminará pronto. ¡Espero!.

También te podría gustar...

13 Respuestas

  1. kSiM dice:

    OUch!

    Ah que dolor que dolor que pena. Mi gran pregunta es si dd crea una imágen exacta del disco duro, es decir, incluidos los sectores de disco marcados como eliminados…

    Esperemos que si y oajlá puedas recuperar tus archivos y pues bueno, siempre se aprende algo nuevo, y creo que haré mis bakcups cuanto antes. 😛

    Saludos y mucha suerte!

  2. Imoq dice:

    Sí, exacto el dd (información en Wikipedia) hace una copia de bloque por bloque, sin importar si el bloque tiene archivos visibles, archivos borrados o simplemente está vacío.

    Y sí, por tu propio bien: ¡respalda, respalda, respalda! Nunca sabes cuándo van a fallar tus discos, o cualquier otro problema 🙁

  3. valentina18 dice:

    Huy… horror de horres, pero en fin, q bueno q finalmente puedes recuperar la información…

    * Por cierto 1: sabes dónde podemos hospedar una página web de manera gratuita y sin tener millones de publicidad por segundo? es un proyecto reteinteresante q espero poder comentarte pronto…
    * Por cierto 2: Espero q mejores pronto, eso de estar enfermo apesta!
    * Por cierto 3: El sábado a las 3pm en sanborn’s centro para festejar mi cumple (q fué hoy… ok, ayer para ser exactos) de ahí mudaremos al barecito o es3 o similar… los espero????

    *Por cierto 4: besitos y galletas!!
    Hely

  4. Zorritonet dice:

    я не знаю, вы знаете?

  5. tin dice:

    hoy se celebro la primera union gay en Mexico!!! yeiiiiii

  6. vicm3 dice:

    Si ya tienes la imagen de la particion ahora la cosa es hacer forensics http://www.sleuthkit.org/ muy bueno para ext y otros fs, foremost + una db de patrones te puede ayudar muchisimo a recuperar la cosa… mas aun si son spools tipo unix normal, me parece que hasta el signature existe…
    http://jbj.rapanden.dk/magicrescue/ intenta hacer eso…

    Saludos, paciencia y suerte. 😎

  7. bubu dice:

    Qué pena y que coraje que esto pase, mi querido Alex. Creo que como bien dice vicm3, ármate de paciencia. Todo en la vida tiene remedio, menos la muerte.

    Un abrazo fuerte, total, yo también ando resfriado, asi que no hay problamas de contagio.

  8. Alejandro Escalante dice:

    Cuanto lo siento tocayo, yo por eso recomiendo emplear Rsync para respaldar y sincronizar. Existen configuraciones para hacerlo en forma incremental, claro la primera vez es necesario pasar todo, pero despues es super eficiente.

    Mis 2 cents.
    AE

  9. Imoq dice:

    Hely:

    ¡Yo te hospedo la página de manera gratuita! 🙂 Luego platicamos ;). No pudimos ir a tu cumple :(. Pero ojalá que te la hayas pasado genial :D.

    Zorritonet:

    ¿En español y/o con ISO-8859-1?

    tin:

    errr… ¿muy bien? 😛 😆

    vicm3:

    Mil gracias por la luz extra que me das, cuando tenga la imagen intentaré rescatar lo que se pueda. ¡Muchas gracias por tu sabio consejo!.

    Gildardo:

    Pues dicen los desarrolladores de ext3 que eso no tiene remedio, pero intentemos contradecirlos 😉 jejeje. Y claro que nos damos el abrazo, aunque ya el resfriado se me fue, total, otro resfriado sí lo aguanto. (¡Que te mejores!).

    Alex Escalante:

    Por supuesto que para los respaldos remotos rsync es LA herramienta, jeje. Siempre lo utilizo, un «rsync -avze ssh [email protected]:directorio/ local/» me ha salvado la vida muchas veces. El problema, como te debes imaginar, es hacer el primer respaldo en donde se deben descargar tooodos los datos. Eso sí da flojera 😳

  10. Zorritonet dice:

    No se, ¿Tu sabes?

    Por cierto felicidades por tener la mega paciencia de levantar tu pequeño respaldo, creeme es una labor titanica, tanto tanto que hasta web@ me da, y pues no me he metido al linix como tu para emitir soluciones, y ya no pude seguir en la macrotransa debido a que se me atravezo un compromiso escolar y pues tu sabes primero la escuela despues lo demas, ahora hasta el año que entra, y digo macrotranza debido a que en la segunda tanda yo ya sabia que pregunta tuve mal y al aventarme al tiempo de penalizacion cuando acabo era otra la pregunta jajaja que servidor tan tonto tiene en cinemex, y la que tenia bien (porque las anoto) aparecio en la siguiente tanda chale!!!!!!!!!!!!

    😆

  11. DECKS dice:

    …afortunadamente yo no era el administrador, y lo de mi área lo tenía bien respaldadito :P, bueno Imoq ya vi que lo estas superando, y bueno yo no puedo darte consejos «técnicos» porque sabes que a mi eso de la administración de servidores no se me da, sólo me resta desearte mucha suerte.

    Saludos!!

  12. ZMoK dice:

    alguien podria dezirme como montar imagenes de disco *.img en debian por su atencion muchas gracias .. si pueden contesten a mi correo [email protected]

  13. edith lucia sanchez gomez dice:

    si alguien leee mi mzj porfavor ayuden me aqui les dejo mi correo es pero y me ayuden asepto friend´s

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *