¿Cómo puedo recuperar un archivo eliminado en Android?

34

Acabo de eliminar un archivo en mi Nexus S que realmente necesito recuperar. (En realidad, era parte de una aplicación que usaba una base de datos sqlite que hacía una tabla desplegable al actualizar a una nueva versión).

Presumiblemente necesito rootear el teléfono primero (lo cual escuché es fácil en los teléfonos Nexus) pero ¿estoy en una trampa-22 aquí? A saber, ¿rootear el teléfono significa borrar / sobrescribir la partición donde viven los datos?

Si no, ¿qué recomienda para las herramientas de recuperación de datos? Presumiblemente, el archivo simplemente estaba desvinculado y no se sobrescribió activamente (como es habitual cuando se "elimina" un archivo), por lo que técnicamente los datos deben estar allí ...

dreeves
fuente
No puedo publicar una respuesta, el sistema va en mi contra. Peor para ellos ... La forma más fácil cuando tienes un sistema Linux y tu dispositivo con recuperación TWRP es. 0. En primer lugar! Deja de crear nuevos archivos, cierra todas las aplicaciones. Si necesita ejecutar algo, mejor BORRE primero algunos archivos innecesarios tanto como sea posible para liberar más espacio y tener más oportunidades de mantener intactos sus archivos eliminados. Por supuesto, tendrá que saber qué partición necesita liberar. Las altas posibilidades son las que están montadas como /data(sus archivos locales y eliminados están /data/mediao algo así).
midenok
1. En la recuperación TWRP, copie su partición dda la tarjeta micro SD en piezas de 4 Gb: `` `dd if = / dev / dm-0 of = / sdcard / x1 ... n bs = 1048576 count = 4095 skip = ... `` Bueno, tiene una opción para montar una unidad OTG externa (aunque encuentre alguna fuente de alimentación externa). Pero el mío no funcionó, así que tuve que poner piezas en micro-SD. En el skipparámetro pondrás: 0, 4095, 8190, 16380, etc.
midenok
2. Mueva todas las piezas al sistema Linux, concatene con cat.
midenok
3. Use testdiskpara recuperarse. Esta es la herramienta más versátil para extfs undelete. Permite deshacerse de un directorio específico y recuperar incluso archivos rotos y funciona muy rápido (aparte de los escáneres heurísticos). Por lo tanto, se asegurará de que todo lo que sea posible se recupere o se sobrescriba.
midenok
O bien: siempre instálelo testdiskcomo parte del paquete busybox y manténgalo en su teléfono.
midenok

Respuestas:

35

Forma manual

Afortunadamente, la recuperación de datos en Android no es diferente de cualquier otra PC / Linux con un dispositivo de almacenamiento flash. Primero necesita root y el ddbinario en su dispositivo para hacer una copia de seguridad completa del dispositivo de almacenamiento en bloque en el que estaba el archivo eliminado. dda veces ya está instalado en su sistema.

Entonces son solo 3 pasos para descubrir si el archivo podría recuperarse:

  1. Averigüe en qué dispositivo de bloque estaba el archivo. Víamount
  2. Adquirir e imagen de ese dispositivo de bloque con dd: dd if=/dev/<blockdevice> of=/sdcard/image bs=4096
  3. Obtenga una herramienta forense de recuperación de datos y deje que busque /sdcard/imageel archivo perdido. Por supuesto, puede intentar ejecutar varias herramientas en la imagen. Foremost y Bisturí son un buen comienzo.

Aplicación "Recuperar"

Hay una nueva aplicación llamada "Undelete Beta" que puede recuperar archivos en el almacenamiento interno y la tarjeta SD. La aplicación es beta y tiene algunas restricciones.

Si el archivo es realmente importante, siempre elegiría la "Forma manual" .

Fluir
fuente
Flow, muchas gracias; ¡gran respuesta! Me siento menos abatido ahora. :) Sin embargo, estoy un poco intimidado por el enraizamiento. ¿Sabes algo sobre rootear el Nexus S? ¿Perderé datos o aplicaciones o algo? ¿Tendré que desrootearlo para obtener actualizaciones automáticas del sistema operativo en el futuro? ¿También es unrooting simple?
Dreeves
Para rootear vea esta pregunta . No tengo Nexus S, pero diría: No, no y, a veces.
Flujo
1
@Flow: a) Realmente no tocaría más la partición afectada, pero desbloquearía el Nexus y 'fastboot boot cwm.img' para una recuperación de tmp. b) Preferiblemente, use adb sobre la marcha para transmitir los datos de la partición desde el teléfono (sin almacenamiento intermitente en / tarjeta sd) usando stdout + gzip + uuencode c) talla: sqlite3 no tiene pie de página, sino un encabezado "formato SQLite 3". En primer lugar, es mejor definir un tamaño máximo y tal vez 'SIGUIENTE' (indicando EOF si se encuentra cualquier otro encabezado nuevo). ¿OK si edito?
ce4
1
¡+1 para 'bisturí'! No lo he sabido antes. Por cierto: el fotorec de Testdisk también es bastante útil (para tipos de archivo estándar como .jpg y otros)
ce4
¿Qué pasa si el dispositivo a respaldar es más grande que 4gb?
David V.
10

A partir de Android 4.3+ y la implementación de TRIM, ahora es increíblemente difícil recuperar archivos borrados en la memoria interna.

Algunas de las soluciones sugeridas probablemente no valdrán la pena a menos que pueda escanear la memoria en busca de los archivos eliminados muy rápidamente después de la eliminación.

Además, en el caso de recuperación después de un restablecimiento de fábrica, a partir de Android 4.0+ un restablecimiento de fábrica ahora termina haciendo un borrado seguro (u operación similar) para que todos los datos se eliminen irrevocablemente.

Referencia:

Andreas J.
fuente
¿Asumo que esta es la respuesta correcta en 2019?
ripper234
7

El nuevo Undelete Beta puede ser útil aquí si no quieres involucrar a una PC. Cada vez que escribe en el almacenamiento corre el riesgo de sobrescribir el archivo eliminado, pero el enrutamiento no debería borrarse.

Matthew Read
fuente