Команда adb shell rm: удаление файлов на Android через ADB

Команда adb shell rm удаляет файлы на Android-устройстве напрямую через отладочный мост — без корзины, без подтверждения и без возможности отмены. Одна опечатка в пути, например rm /sdcard/DCIM вместо конкретного файла, способна стереть всю папку с фотографиями, поэтому перед выполнением путь стоит проверить командой adb shell ls.

Инструмент применяют в ситуациях, когда файл не удаляется штатными средствами: зависший кэш приложения, повреждённый файл в памяти, остатки удалённых программ, которые занимают место. Через ADB (Android Debug Bridge) вы получаете доступ к файловой системе с правами shell-пользователя — этого достаточно для работы с /sdcard/ и данными некоторых приложений, но недостаточно для системных разделов без root-прав.

Что такое adb shell rm и как это работает

Конструкция состоит из трёх частей: adb вызывает отладочный мост на компьютере, shell открывает командную оболочку на устройстве, а rm — стандартная Unix-команда удаления (от remove). Фактически вы выполняете Linux-команду внутри Android, поскольку система построена на ядре Linux.

Удаление происходит на уровне файловой системы: запись о файле убирается из таблицы размещения, а занимаемое место помечается свободным. Никакой «корзины» при этом не существует — восстановить удалённый через rm файл штатными средствами невозможно. Это принципиальное отличие от удаления через галерею или файловый менеджер.

Работает команда только при выполнении двух условий: на устройстве включена отладка по USB в меню разработчика, а на компьютере установлен пакет Android SDK Platform Tools. Подключение возможно по кабелю или по Wi-Fi (на современных версиях Android — через сопряжение по коду).

Синтаксис и основные флаги

Базовый вид команды предельно прост:

adb shell rm /sdcard/Download/file.apk

Для каталогов и защищённых объектов используются флаги. Их можно комбинировать, например rm -rf удалит папку со всем содержимым без лишних вопросов.

ФлагНазначениеПример
-rРекурсивное удаление каталога с содержимымrm -r /sdcard/temp
-fПринудительное удаление без запросовrm -f /sdcard/log.txt
-rfРекурсивно и принудительноrm -rf /sdcard/cache
-iЗапрос подтверждения на каждый файлrm -i /sdcard/doc.pdf

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

Подготовка: подключение устройства по ADB

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

  • 🔧 Включите режим разработчика: откройте «Настройки» → «О телефоне» и несколько раз нажмите на «Номер сборки» (точный путь зависит от оболочки производителя).
  • 🔌 В появившемся меню «Для разработчиков» активируйте отладку по USB.
  • 💻 Установите Platform Tools на компьютер и подключите устройство кабелем.
  • ✅ Выполните adb devices — на экране смартфона появится запрос на разрешение отладки, подтвердите его.

Если команда adb devices показывает пустой список или статус unauthorized, проверьте кабель (некоторые кабели передают только питание), смените USB-порт и повторно подтвердите разрешение на устройстве. На Windows иногда требуется установка драйвера производителя смартфона.

☑️ Перед первым удалением через adb shell rm

Выполнено: 0 / 5

Практические примеры удаления

Разберём типовые сценарии. Удаление одного файла из папки загрузок:

adb shell rm /sdcard/Download/old_backup.zip

Очистка папки кэша целиком:

adb shell rm -rf /sdcard/Android/data/com.example.app/cache

Проверить, что объект существует, перед удалением помогает связка с ls:

adb shell ls /sdcard/DCIM/

Если имя файла содержит пробелы или кириллицу, заключайте путь в кавычки: adb shell rm "/sdcard/Мои документы/отчёт.pdf". Без кавычек оболочка воспримет каждое слово как отдельный аргумент и либо выдаст ошибку, либо — что хуже — попытается удалить не те объекты.

📊 Для чего вы используете adb shell rm?
Очистка кэша и мусора
Удаление неудаляемых файлов
Удаление предустановленных приложений
Отладка и разработка

Удаление системных приложений: важное отличие

Частая цель пользователей — избавиться от предустановленных программ. Здесь кроется подвох: rm для системных APK в /system/app/ не сработает без root-прав, поскольку раздел смонтирован в режиме чтения. Вместо этого применяется другая команда:

adb shell pm uninstall -k --user 0 com.vendor.bloatware

Она удаляет приложение только для текущего пользователя, физически пакет остаётся в системном разделе и возвращается после сброса настроек. Это более безопасный путь: система не пострадает, а при необходимости приложение восстанавливается командой adb shell cmd package install-existing имя_пакета.

⚠️ Внимание: удаление системных пакетов через pm uninstall может нарушить работу устройства, если пакет связан с базовыми функциями (телефония, интерфейс, сервисы Google). Предварительно выясните назначение пакета по его имени и не удаляйте то, в чём не уверены.
Как узнать имя пакета приложения

Выполните adb shell pm list packages — команда выведет список всех установленных пакетов. Для фильтрации добавьте часть названия, например: adb shell pm list packages | grep browser (на Windows используйте findstr вместо grep).

Типичные ошибки и их разбор

  • 🚫 No such file or directory — путь указан неверно или объект уже удалён. Проверьте содержимое каталога через ls и учтите регистр букв: в Linux Download и download — разные папки.
  • 🔒 Permission denied — недостаточно прав. Обычно это системные разделы; без root доступ туда закрыт, и обходить ограничение стоит только с полным пониманием рисков.
  • 📂 Is a directory — вы пытаетесь удалить папку без флага -r. Добавьте его либо убедитесь, что цель — именно файл.
  • device not found — связь с устройством потеряна: переподключите кабель и повторите adb devices.

Отдельного внимания заслуживает ситуация, когда команда выполнилась без ошибок, но файл «вернулся». Такое бывает с кэшем активных приложений: работающая программа тут же создаёт файлы заново. Решение — сначала остановить приложение (adb shell am force-stop имя_пакета), затем удалять.

Меры безопасности при работе с rm

Главное правило уже звучало, но повторение здесь оправдано: rm не спрашивает и не прощает. Особенно опасна команда с флагом -rf и широким путём вроде /sdcard/* — она очистит всю внутреннюю память, доступную пользователю: фотографии, документы, загрузки.

⚠️ Внимание: никогда не выполняйте команды вида rm -rf / или rm -rf /* — даже без root-прав они способны уничтожить все пользовательские данные на устройстве. Такие «шуточные» инструкции встречаются на форумах и приводят к полной потере информации.

Разумная практика — резервное копирование перед экспериментами. Файлы с /sdcard/ можно скопировать на компьютер командой adb pull /sdcard/DCIM/ ./backup/. Это займёт время, но восстановление после ошибки займёт несравнимо больше — если вообще будет возможно.

Часто задаваемые вопросы

Можно ли восстановить файл, удалённый через adb shell rm?

Штатными средствами — нет, корзина при таком удалении не используется. Теоретически данные могут остаться в свободных блоках памяти, но извлечение требует специализированного ПО и root-доступа, а гарантий не даёт. Поэтому резервная копия — единственный надёжный вариант.

Почему rm выдаёт Permission denied?

У shell-пользователя ADB ограниченные права. Удалять можно файлы на /sdcard/ и в данных приложений, доступных для отладки. Системные разделы защищены, и без root-прав команда там не сработает — это штатное ограничение Android, а не неисправность.

Чем rm отличается от pm uninstall?

rm удаляет файлы и папки в файловой системе. pm uninstall деинсталлирует приложение как пакет — корректно убирая его данные и регистрацию в системе. Для удаления программ используйте именно pm uninstall, а не удаление APK-файлов вручную.

Работает ли adb shell rm без root-прав?

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

Что делать, если случайно удалил нужную папку?

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