MyTetra Share
Делитесь знаниями!
Как в Android найти и удалить ненужные файлы с внутреннего диска через ADB
Время создания: 18.11.2021 17:02
Текстовые метки: android, андроид, adb, файл, не хватает места, удалить, внутренний, системный, диск
Раздел: Компьютер - Android
Запись: xintrea/mytetra_syncro/master/base/16372441458fis8fsooh/text.html на raw.github.com

В телефонах с Android обычно есть два диска: внутренний Flash-накопитель, и внешняя SD-карточка. Если пользоваться телефоном достаточно долго, несколько лет, то может оказаться так, что внутренний диск будет полностью заполнен. А всяческие попытки освободить место через пользовательские утилиты Android по управлению памятью будут заканчиваться тем, что можно будет временно освободить 300-500Мб, которые в течении недели просто закончатся, и нужно будет чистить заново.


Здесь описываются следующие вопросы:


- Как на системном диске найти самые большие директории

- Как скопировать с системного диска файлы на компьютер перед их удалением

- Как удалить файлы с системного диска


Предполагается, что комплект с консольной утилитой ADB уже установлен на компьютере, мобильник рутован.



Как войти под рутом в консоль телефона


Нужно дать команду:



adb shell



Откроется консоль телефона под обычным пользователем. Для переключения на рута нужно дать команду:



su -



После этой команды приглашение ввода изменится, будет виднно, что работа происходит под пользователем root.



Как на системном диске найти самые большие директории


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



du | sort -n



Команда du пробегает по всем каталогам и показывает их размер. Размер печатается в первом столбце консольного вывода. Команда sort сортирует консольный вывод, начиная с первого символа в каждой строке, таким образом в начале полученного списка будут самые маленькие директории, в конце списка - самые большие. Команда du в Android укорочена по своему функционалу, не поддерживает многие опции. По-умолчанию размеры директорий она выдает в секторах, а не в байтах. Но этого достаточно, чтобы отсортировать директории по размеру и увидеть самые заполненные.


Консольный выхлоп можно выделить в терминале, и поместить в отдельный текстовый файл на диске компьютера. Так как директорий очень много (более 20 тысяч), то можно выделить снизу-вверх, дойдя до директорий, размер которых равен 0 - их тоже несколько тысяч - то есть, их не имеет смысла выделять. Далее этот файл можно преобразовать, убрав из него лишнее.


Например, имеет смысл убрать все упоминания директории /mnt и /storage. Делается это так:



cat big_directories_01.txt | grep -P -v "\.\/mnt" > big_directories_02.txt

cat big_directories_02.txt | grep -P -v "\.\/storage" > big_directories_03.txt



После этих действий будет видно, в каких директориях находится больше данных.



597480 ./system/app

702784 ./system/priv-app

727152 ./cust/preinstalled/public/app

747800 ./data/data/com.whatsapp/databases

748152 ./cust/preinstalled/public

748160 ./cust/preinstalled

783240 ./data/data/com.whatsapp

798104 ./data/app/com.google.android.googlequicksearchbox-2

823936 ./data/data/com.google.android.gms

825864 ./data/data/com.google.android.tts/files/superpacks

825944 ./data/data/com.google.android.tts/files

827456 ./data/data/com.google.android.tts

836696 ./data/share/0

836704 ./storage/emulated/0

836728 ./data/share

836736 ./storage/emulated

875800 ./cust

2497312 ./data/data/com.google.android.apps.photos/files/trash_files

2842392 ./data/dalvik-cache/arm

2842416 ./data/dalvik-cache

2885680 ./system

4639376 ./data/data/com.google.android.apps.photos/files/shadowcopies

7136776 ./data/data/com.google.android.apps.photos/files

7189432 ./data/data/com.google.android.apps.photos

9268952 ./data/app

10667576 ./data/data

23900848 ./data

160260360 .



Нужно понять, в каких каталогах можно удалить данные, не повлияв на операционную систему. Например, это могут быть директории:



/data/data/com.google.android.apps.photos/files/shadowcopies

/data/data/com.google.android.apps.photos/files/trash_files



Обычно в таких директориях содержится несколько гигабайт данных. Однако перед их удалением надо сделать их копию на компьютер, вдруг там что-то важное и забытое.



Как скопировать с системного диска файлы на компьютер


Просто так скопировать файлы с системного диска не получится. Дело в том, что программа ADB имеет позможность копировать файлы и директории с мобильного устройства с помощью команды adb pull, однако выполнение этой команды происходит под обычным Android-пользователем, а не под рутом, и поэтому доступа к системному каталогу и файлам у такой команды не будет. И нет никакой возможности переключиться на рута в таком режиме.


Однако есть обходной путь: надо скопировать файлы на внешнюю SD-карточку, после чего файлы легко забираются с телефона стандартным способом.


Делается это просто: на SD-карте создается каталог (путь к корню SD-карты может выглядеть как /storage/XXXX-XXXX) с помощью команды mkdir. В нее копируются файлы с помощью команды cp. Все делается в adb shell как в обычном Linux.


После размещения файлов на SD-карточке, их можно забрать на компьютер одной командой:



adp pull /storage/1234-5678/mydir .



или, для некоторых андроидов:



adp pull /storage/1234-5678/mydir/* .



Скаченные файлы будут размещены в текущей директории, где выполняется данная команда (точка в конце и означает текущую директорию).



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


Далее файлы можно удалить. Делается это все в той же консоли adb shell с помощью команды rm:



rm -f *



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


Узнать диск можно с помощью команды mount. В ней видно устройство диска и каталог монтирования. Учитывая путь к каталогу, в котором происходит удаление файлов, можно понять, к какому диску этот каталог принадлежит.


О том, как перемонтировать устройство в режим чтения/чаписи, написано в следующей статье:



Как подключить внутренний диск Android в режиме записи



Все действия, описанные в данной статье, применимы к любым дисковым устройствам, видимым в системе.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования