¿Cómo se recupera un archivo eliminado bajo Linux?
Por accidente, usé rm
en un archivo que no quería eliminar. ¿Hay alguna forma de recuperarlo bajo Linux?
Por accidente, usé rm
en un archivo que no quería eliminar. ¿Hay alguna forma de recuperarlo bajo Linux?
Los siguientes son los pasos genéricos para recuperar archivos de texto.
Primero use el comando de pared para decirle al usuario que el sistema va a caer en un modo de usuario único:
Luego use el comando init 1 para llevar el sistema a un modo de usuario único:
Usar grep (modo tradicional de UNIX) para recuperar archivos
Se encuentra en http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
dd
e intenta encontrar el archivo dentro de él (usando grep
, o un editor). Editar: a veces ddrescue
funciona mejor que dd
.
(http://en.wikipedia.org/wiki/TestDisk) tiene una opción de anulación que debería funcionar con Linux.
Hay un recorrido por Linux (http://www.cgsecurity.org/wiki/TestDisk:_undelete_file_for_ext2). Ten en cuenta que funciona para ext2 , ext3 , y ext4 .
Hice esto hace un par de años. Mi enfoque fue directamente, sin tiempo que perder, desmontar la partición y luego
dd if=/dev/hda1 of=backup_image.ext3
tener un archivo de respaldo del estado exacto de la partición. Luego puede montar la partición de nuevo y continuar como siempre mientras busca el archivo eliminado en su imagen creada. La imagen probablemente será MUY grande ya que necesita todo el espacio “vacío”, por lo que podría ser un problema práctico para almacenarlo.
Entonces fue sólo para realizar aburridas búsquedas después de los fragmentos de texto que esperaba que estuvieran en algún lugar de la sopa del contenido de la partición. Por ejemplo, para encontrar archivos .tex, corrí
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
que imprimió un gran contexto alrededor de la frase “subsección” y guardó la salida en un archivo para ser buscado manualmente. Imprimí un contexto tan grande ya que me tomó tanto tiempo buscar la imagen que preferí no hacerlo más veces de las necesarias.
También el comando strings
fue útil para eliminar la basura binaria de la salida, pero si recuerdo correctamente también eliminó todas las líneas nuevas, lo que podría ser un problema.
Para encontrar archivos binarios de la misma manera, uno podría tener éxito en encontrar un encabezado característico o algo de un cierto archivo, pero me imagino que es una aventura bastante grande.
Breves notas técnicas: hay dificultades técnicas con la recuperación de discos y Ext3/4. Es una cosa larga de explicar, pero brevemente (e inadecuadamente): Ext3/4 elimina los “marcadores” que le dicen al sistema operativo dónde se encuentran los archivos en el disco cuando los borras. Los archivos no se borran, pero ya nadie sabe en qué parte del disco empiezan y terminan, y a veces incluso están fragmentados en varios lugares. Algunos otros sistemas de archivos sólo establecen el estado de los archivos como “borrados”, pero mantienen los datos de localización. Entonces, recuperar los archivos no es más difícil que mirar los punteros de los archivos con esta bandera (deberían seguir disponibles si no ha habido demasiada actividad), y luego esperar que su contenido no haya sido sobrescrito.
¿Qué es lo mejor? Retórica, en mi opinión. El respaldo frecuente es la respuesta a todos estos problemas. Los datos importantes sin un sistema de copia de seguridad automático son un accidente en espera de ocurrir, IMHO.
Anécdota personal obligatoria: Iba a eliminar foo\ foo*
de ~
. Escribí
rm -r foo<Tab>*
, lo que tristemente, ya que foo
aparentemente era un enlace simbólico y el único archivo que coincidía con esto, el shell se convirtió en
rm -r foo\ foo *
Presioné Enter y me senté allí mirando el comando, lo que debería haber tomado un segundo como máximo. Después de un poco más de tiempo rm
me preguntó si quería “eliminar el archivo protegido contra escritura ‘algo’”. Rápidamente sentí los escalofríos y suavemente y muy controlado presioné Ctrl+c
. ~La mitad de mi ~
fue borrado, pero me las arreglé para recuperar todo lo valioso a través del grepping descrito anteriormente y algunas copias de seguridad más o menos actuales. Tenía algunos datos de medición personalmente muy valiosos (léase: que consumen mucho tiempo) y muy recientes en el disco que se perdieron, pero había hecho cuádruples copias de seguridad. Una desapareció aquí, otra debido a un fallo del sistema en la escuela, otra estaba corrupta, y al principio no pude encontrar la cuarta, ya que por error la había puesto en la carpeta equivocada :-D . Si rm -r
no se hubiera atascado en un archivo protegido contra escritura, el cuarto se habría comido, ya que esa carpeta estaba montada vía sshfs en mi ~
. Soy mucho más cuidadoso con ese tipo de cosas desde entonces.
La única respuesta correcta es: restaura tu archivo desde la copia de seguridad. Todo el mundo debe tener una copia de seguridad. Para los archivos realmente importantes, debes tener dos copias de seguridad. ¿No es así? Bueno, lástima, aquí hay una lección aprendida ( Perdón por sonar duro, pero estoy en el almacenamiento de datos, y la gente no hace copias de seguridad hasta que pierden algunos datos importantes, eso es un hecho. Así que sí, pareces estúpido, pero también lo es casi todo el mundo).
OK, no tienes ninguna copia de seguridad. debes dejar de usar el sistema de archivos que contenía el archivo ahora mismo. Cualquier actividad de escritura puede definitivamente regar los datos del archivo que may (sólo may) permanecen en el disco.
si cometiste el trágico error de usar sólo una partición como sistema de archivos raíz y /home, eso significa que debes arrancar desde algún otro dispositivo. NOW.
Si su archivo es de algún formato común ( Word, JPG, etc), use Photorec . Photorec puede recuperar la mayoría de los formatos de archivo comunes.
Puede probar el método “ext3 undelete” propuesto anteriormente, pero necesita estar cómodo con la línea de comandos, entender el funcionamiento interno básico de linux, etc.
Si su archivo es de algún formato especial, mala suerte. Una vez escribí un programa Perl para escanear un disco en busca de algunos archivos especiales, y funcionó bastante bien; pero necesitarás saber algo de programación para hacerlo, y estar bastante a gusto con linux también.
Si es el estándar rm , espero que tengas una copia de seguridad. El procedimiento para recuperar un archivo eliminado sería diferente para cada sistema de archivos, si es que se puede hacer. Linux no tiene una “papelera de reciclaje” incorporada; una vez que eliminas un archivo, casi desaparece.
De cualquier manera que lo hagas, querrás desconectar el ordenador – tan pronto como sea posible, ya que continuar ejecutando el ordenador (incluso apagarlo) provoca que se escriba en el disco y aumenta la posibilidad de que algunos bloques anteriormente ocupados por el archivo se sobrescriban. Una vez que haya hecho eso, o bien colóquelo en otro ordenador, reinicie desde un live CD (asegurándose de no montar el disco a menos que lo monte como sólo de lectura), o retire el disco duro y llévelo a un especialista en recuperación de datos.
Ponga sus expectativas en un nivel bajo. Si algo fue escrito sobre los datos ‘eliminados’, lo perderás.
He hecho una pequeña recuperación y las mejores herramientas que encontré fueron diseñadas a menudo hacia ciertos formatos. Por ejemplo, ‘photorec’ fue genial cuando quise recuperar decenas de miles de jpegs. Recuva también me ha ayudado antes y podría ser su mejor opción. (Es gratis, no te dejes engañar para pagar por sus anuncios)
Al final del día, si lo que has perdido es importante, desconecta el disco duro y deja de escribirle. Utilice todos los programas de recuperación que pueda encontrar hasta que recupere sus datos o deje de valer la pena. Si es realmente importante, envíelo a los profesionales a un precio elevado.
Si ha tenido suerte con una herramienta antes, inténtelo de nuevo visto que está familiarizado con ella. Al final del día, no deberían escribir en el disco y así puedes usar el software hasta que encuentres uno que funcione.
Si tienes una aplicación abierta que está leyendo el archivo, como VLC o LibreOffice, entonces esta estupenda respuesta de L&U.SO me ayudó a salir de este lío. Aquí está un método alternativo para hacer lo mismo.
La idea general es encontrar el enlace en /proc/PID/fd/DESCRIPTOR_NUMBER
y copiarlo de nuevo a su ubicación original. Usa ps aux | grep APP_NAME
para encontrar el PID y luego ls -la /proc/PID/fd/
para encontrar el NÚMERO DE DESCRIPTOR apropiado.
Si no es sobrescrita por otros usuarios, entonces tienes suerte. Accidentalmente borré mi archivo fuente de cpp y utilicé una herramienta llamada “foremost”, que me ayudó a restaurar los restos de cpp de 60G del disco. Finalmente, recuperé mi archivo ensamblando esos desechos pieza por pieza. Creo que escanea cierto patrón para un tipo de archivo específico y atraviesa todos los inodos del disco para recuperar los archivos! ¡Sólo inténtalo!
La respuesta “correcta” es asumir que no hay un método para recuperar de forma fiable, y en su lugar restaurar a partir de copias de seguridad o un sistema clonado o reinstalar.
TestDisk es una gran herramienta, y hay otras formas de poder recuperar algunos datos de la unidad física dependiendo del sistema de archivos y la reciente eliminación, pero el tiempo y el dolor que implica puede ser demasiado grande, así que MANTENGA LAS RESPALDAS (y también pruebe que son válidas y restaurables)!
Aquí hay un gran documento para ti. Encontrarás un montón de consejos prácticos allí.
Por cierto, hay dos grupos de personas:
Felicidades, te acabas de promocionar al grupo 2. ;-)
Si accidentalmente has borrado el archivo de Linux entonces puedes usar este comando:
find /root -name "search text" -type f -exec mv {} "/home" \;
en lugar de search text
puedes poner el nombre del archivo y puedes especificar el directorio donde quieres restaurar en lugar de /home
.
Puedes probar este guión. Funciona muy bien y está pensado para ser usado en lugar de rm y lo estoy usando extensamente ahora. https://github. com/nateshmbhat/safe-rm
rm
Tuve el mismo problema la semana pasada y probé muchos programas, como debugfs, photorec, ext3grep y extundelete. ext3grep fue el mejor programa para recuperar archivos. La sintaxis es muy fácil:
ext3grep image.img --restore-all
o:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
Este video shows es un mini tutorial que puede ayudarte.