Por lo general, cuando los editores guardan archivos, eliminan o truncan a 0, liberando así el espacio asignado y luego escriben, lo que asigna nuevo espacio. Esto da como resultado que el sistema de archivos coloque los datos en una ubicación física completamente diferente. Entonces su idea podría no funcionar.
Puede obtener la ubicación física de un archivo usando filefrag
o hdparm --fibmap
, y luego usar dd
para leer esa ubicación física directamente. Aquí describí este proceso en un contexto diferente: /unix//a/85880/30851
En su caso, es más probable que necesite el enfoque general para encontrar datos textuales ... algo como:
strings -n 12 -t d /dev/partition | grep -F 'text snippet'
strings
buscará datos ASCII consecutivos (también admite algunas otras codificaciones, no estoy seguro acerca de UTF-8. Si es código o inglés, no lo necesitará) y también imprimirá el desplazamiento donde se encontró.
text snippet
debe ser una muestra de texto exacta y única que recuerde que estaba en la parte del archivo que está buscando [en una sola línea]. (Si no lo sabe exactamente, puede utilizar expresiones regulares).
-n 12
es la longitud mínima que strings
buscará. 12
debe ser la longitud de tu text snippet
. Este parámetro es opcional, si se proporciona, podría ayudar strings | grep
ir un poco más rápido.
Le tomará mucho tiempo leer la partición completa, pero si tiene éxito, tendrá un desplazamiento que puede alimentar dd
para tomar el área general y luego eliminar cosas que no pertenecen.
No he hecho nada en ese directorio desde
Si su directorio no es un punto de montaje ... la mayoría de los sistemas de archivos realmente no reservan espacio "por directorio", así que ... todas y cada una de las escrituras en todo el sistema de archivos podrían sobrescribir el bit que está buscando. En una situación de recuperación de datos, generalmente cambia todo en modo de solo lectura.
strings
lo tanto , solo localizará algunas partes del archivo a menos que tenga mucha suerte.