Как я могу восстановить удаленный файл на Android?

34

Я только что удалил файл на моем Nexus S, который мне действительно нужен обратно. (На самом деле это было частью приложения, использующего базу данных sqlite, которая выполнила удаление таблицы при обновлении до новой версии.)

Предположительно, мне нужно сначала рутировать телефон (что, как я слышал, легко на телефонах Nexus), но я здесь в ловушке? А именно, означает ли рутирование телефона стирание / перезапись раздела, в котором хранятся данные?

Если нет, что вы рекомендуете для инструментов восстановления данных? Предположительно, файл был просто не связан и не был активно перезаписан (как обычно при «удалении» файла), поэтому технически данные должны быть там ...

dreeves
источник
Я не могу опубликовать ответ, система идет против меня. Хуже для них ... Самый простой способ, когда у вас есть система Linux и ваше устройство с восстановлением TWRP. 0. Прежде всего! Прекратите создавать новые файлы, закройте все приложения. Если вам нужно что-то запустить, лучше УДАЛИТЕ сначала как можно больше ненужных файлов, чтобы освободить больше места и получить больше шансов сохранить ваши удаленные файлы нетронутыми. Конечно, вам нужно знать, какой раздел вам нужно освободить. Скорее всего, это тот, который монтируется как /data(ваши локальные и удаленные файлы находятся в /data/mediaили что-то в этом роде).
Миденок
1. При восстановлении TWRP скопируйте ваш раздел ddна карту micro SD по 4 Гб: `` `dd if = / dev / dm-0 of = / sdcard / x1 ... n bs = 1048576 count = 4095 skip = ... `` `Ну, у вас есть возможность смонтировать внешний диск OTG (хотя найдите какой-нибудь внешний источник питания). Но у меня не получилось, поэтому мне пришлось положить кусочки на микро-SD. В skipпараметре вы введете: 0, 4095, 8190, 16380 и т. Д.
миденок
2. Переместить все части в систему Linux, объединить с cat.
Миденок
3. Используйте testdiskдля восстановления. Это наиболее универсальный инструмент для удаления удаленных файлов. Он позволяет удалять из определенного каталога и восстанавливать даже поврежденные файлы и работает очень быстро (кроме эвристических сканеров). Таким образом, вы будете уверены, что все, что возможно, восстановлено или перезаписано.
Миденок
Или: всегда устанавливайте testdiskкак часть пакета busybox и сохраняйте его на своем телефоне.
Миденок

Ответы:

35

Ручной способ

К счастью, восстановление данных на Android не отличается от любого другого ПК / Linux с флэш-накопителем. Сначала вам нужно иметь root и ddдвоичный файл на вашем устройстве, чтобы сделать полную резервную копию блочного устройства хранения, на котором был удаленный файл. ddиногда уже установлен в вашей системе.

Тогда это всего лишь 3 шага, чтобы узнать, можно ли восстановить файл:

  1. Узнайте, на каком блочном устройстве был файл. С помощьюmount
  2. Получить и изображение этого блочного устройства с помощью dd: dd if=/dev/<blockdevice> of=/sdcard/image bs=4096
  3. Получить инструмент для восстановления данных и позволить ему искать /sdcard/imageпотерянный файл. Конечно, вы можете попробовать запустить несколько инструментов на изображении. Foremost и Scalpel - хорошее начало.

Приложение "Undelete"

Существует новое приложение под названием «Undelete Beta», которое может восстанавливать файлы во внутренней памяти и на SD-карте. Приложение является бета-версией и имеет некоторые ограничения.

Если файл действительно важен, я всегда выбираю «Ручной путь» .

поток
источник
Поток, большое спасибо; отличный ответ! Теперь я чувствую себя менее подавленным. :) Я немного запуган, хотя рутирование. Вы знаете что-нибудь о рутировании Nexus S? Я потеряю какие-либо данные или приложения или что-нибудь? Нужно ли отключать его для автоматического обновления ОС в будущем? Разрушение тоже просто?
ныряет
Для рутинга смотрите этот вопрос . У меня нет Nexus S, но я бы сказал: нет, нет, а иногда.
Поток
1
@Flow: a) Я бы не стал больше трогать затронутый раздел, кроме как разблокировать Nexus и «fastboot boot cwm.img» для восстановления tmp. b) Предпочтительно использовать adb на лету для передачи данных раздела с телефона (без периодического хранения на / SDCard) с использованием stdout + gzip + uuencode c) Вырезание: sqlite3 не имеет нижнего колонтитула, но имеет заголовок «SQLite format 3». Используя прежде всего, лучше всего определить максимальный размер и, возможно, «NEXT» (указывая EOF, если найден какой-либо другой новый заголовок). ОК, если я отредактирую?
ce4
1
+1 за «скальпель»! Не знал раньше. Кстати, фотоотчет Testdisk также весьма полезен (для стандартных типов файлов, таких как .jpg и такие)
ce4
Что делать, если устройство для резервного копирования больше, чем 4 ГБ?
Дэвид В.
10

Начиная с Android 4.3+ и реализации TRIM, теперь невероятно сложно восстановить удаленные файлы во внутренней памяти.

Некоторые из предложенных решений, вероятно, будут бесполезны, если вы не сможете очень быстро сканировать память на предмет удаленных файлов после удаления.

Более того, в случае восстановления после сброса к заводским настройкам, начиная с Android 4.0+, сброс к заводским настройкам теперь завершается безопасным удалением (или аналогичной операцией), так что все данные безвозвратно исчезают.

Ссылка:

Андреас Дж.
источник
Я полагаю, это правильный ответ в 2019 году?
ripper234
7

Здесь может быть полезна новая бета-версия Undelete, если вы не хотите использовать ПК. Каждый раз, когда вы пишете в хранилище, вы рискуете перезаписать удаленный файл, но рут не должен стираться.

Мэтью Рид
источник