Команда adb push зависает на середине передачи или выдаёт «permission denied» — типичная ситуация при первой попытке скопировать файл на Android через ADB, и почти всегда причина в неправильном пути назначения или отсутствии разрешений на запись. Чтобы передача прошла успешно, нужно понимать, как устроена работа протокола ADB, какие пути доступны для записи и как правильно сформировать команду.
ADB (Android Debug Bridge) — это официальный инструмент из состава Android SDK Platform Tools, который позволяет управлять устройством с компьютера через USB-кабель или по сети. В отличие от обычного подключения в режиме MTP, ADB даёт прямой доступ к файловой системе, не требует подтверждения на экране телефона и работает даже тогда, когда сенсорный экран сломан. В этой статье разберём команды adb push и adb pull, типичные ошибки и способы их устранения.
Что нужно подготовить перед копированием
Для работы потребуется три вещи: установленные Platform Tools на компьютере, включённая отладка по USB на смартфоне и исправный кабель. Пакет Platform Tools скачивается с официального сайта для разработчиков Android и не требует установки — достаточно распаковать архив в отдельную папку.
Отладка по USB включается в скрытом меню разработчика. Сначала необходимо открыть Настройки → О телефоне и несколько раз нажать на строку «Номер сборки», пока система не сообщит, что режим разработчика активирован. Затем в разделе Для разработчиков включается пункт «Отладка по USB». Точные названия пунктов могут отличаться в зависимости от оболочки (MIUI, One UI, ColorOS), поэтому при расхождениях стоит свериться с документацией производителя.
После подключения кабеля проверьте, видит ли компьютер устройство. В командной строке, открытой в папке с Platform Tools, выполните:
adb devices
Если в списке появился серийный номер со статусом device — всё готово. Статус unauthorized означает, что на экране смартфона нужно подтвердить запрос на разрешение отладки.
☑️ Подготовка к копированию через ADB
Копирование файлов с компьютера на Android: adb push
Основная команда для отправки файлов на устройство — adb push. Её синтаксис прост: сначала указывается путь к файлу на компьютере, затем путь назначения на смартфоне.
adb push C:\files\photo.jpg /sdcard/DCIM/
Здесь файл photo.jpg из папки C:\files копируется в каталог /sdcard/DCIM/ на устройстве. Обратите внимание: путь /sdcard/ — это стандартное обозначение внутренней памяти, доступной пользователю, и именно сюда безопасно копировать файлы без root-прав. Попытка записать файл в системные разделы вроде /system/ или /data/ на устройстве без рута завершится ошибкой.
Чтобы скопировать целую папку, достаточно указать путь к каталогу без имени файла:
adb push C:\backup\music /sdcard/Music/
- 📁 Копирование одного файла — укажите полный путь к файлу и целевую папку
- 📂 Копирование папки — укажите путь к каталогу, всё содержимое перенесётся рекурсивно
- ⚡ Флаг -a — сохраняет дату изменения файлов при копировании
- 🔄 Флаг --sync — переносит только изменённые файлы, удобно для регулярных бэкапов
Копирование файлов с Android на компьютер: adb pull
Обратная операция выполняется командой adb pull: первым аргументом идёт путь на устройстве, вторым — папка назначения на ПК.
adb pull /sdcard/DCIM/Camera C:\backup\photos
Эта команда скопирует всё содержимое папки камеры на компьютер. Такой способ особенно полезен, когда устройство не определяется как MTP-накопитель или когда нужно автоматизировать выгрузку файлов скриптом.
Если нужно забрать один конкретный файл, укажите его имя целиком:
adb pull /sdcard/Documents/report.pdf C:\Downloads\
При копировании большого количества мелких файлов передача через ADB может занять заметное время — это нормально, скорость зависит от кабеля, порта USB и самого устройства. Прерывать процесс до появления сообщения о завершении не стоит.
Типичные ошибки и их решение
Большинство проблем при копировании через ADB сводится к нескольким повторяющимся ошибкам. Ниже — таблица с самыми частыми из них.
| Ошибка | Вероятная причина | Решение |
|---|---|---|
| permission denied | Запись в системный раздел без root | Копируйте в /sdcard/ вместо системных путей |
| device not found | Не включена отладка или нет драйвера | Проверьте adb devices, переустановите драйвер |
| unauthorized | Не подтверждён запрос на смартфоне | Разрешите отладку на экране устройства |
| no such file or directory | Опечатка в пути или несуществующая папка | Проверьте путь командой adb shell ls |
| Read-only file system | Раздел смонтирован только для чтения | Выберите другой каталог, например /sdcard/ |
⚠️ Внимание: не пытайтесь перемонтировать системные разделы в режим записи без чёткого понимания последствий. На современных устройствах это может нарушить целостность прошивки и привести к невозможности загрузки. Для обычного обмена файлами каталога
/sdcard/достаточно.
Если команда не находит файл на устройстве, убедитесь в правильности пути с помощью adb shell ls /sdcard/ — она покажет содержимое каталога. Пробелы и кириллица в именах папок тоже могут вызывать сбои; такие пути лучше заключать в кавычки.
Как проверить содержимое папки на устройстве
Выполните adb shell, затем команду ls /sdcard/ — отобразится список каталогов. Для выхода из shell введите exit. Так можно убедиться, что целевая папка существует, до начала копирования.
Передача файлов по Wi-Fi без кабеля
ADB умеет работать не только по USB. На устройствах с актуальными версиями Android доступна беспроводная отладка, которая включается в том же меню разработчика. После активации устройство и компьютер соединяются по локальной сети, и команды push/pull работают так же, как по кабелю.
Порядок действий зависит от версии Android: на новых версиях используется сопряжение по коду из меню «Беспроводная отладка», на старых сначала требовалось подключение по USB и команда adb tcpip. Точную процедуру для вашей версии системы стоит уточнить в официальной документации, поскольку она менялась между релизами.
⚠️ Внимание: беспроводная отладка открывает сетевой доступ к устройству. Используйте её только в доверенной домашней сети и отключайте после завершения работы, чтобы исключить несанкционированное подключение.
Когда ADB незаменим, а когда проще обойтись без него
ADB оправдан в ситуациях, где стандартные способы не работают: разбит сенсор и невозможно подтвердить MTP-подключение, нужно забрать файлы из папки, скрытой от обычного проводника, требуется автоматизация через скрипты. Также ADB позволяет копировать данные даже с заблокированного экрана, если отладка была включена и авторизована заранее.
Для повседневного переноса пары фотографий проще использовать кабель в режиме MTP, облачные хранилища или локальные файлообменники. Взвешивайте задачу: настройка ADB занимает время и окупается при регулярном или сложном использовании.
- 🛠️ Сломан экран — ADB часто единственный способ вытащить данные
- 🤖 Автоматизация — команды легко встраиваются в bat- и shell-скрипты
- 📦 Массовый перенос — копирование целых деревьев каталогов одной командой
- 🔓 Без подтверждений — не требует нажатий на экране после первичной настройки
Часто задаваемые вопросы
Нужны ли root-права для копирования файлов через ADB?
Нет. Копирование в пользовательский раздел /sdcard/ и обратно работает на любом устройстве без root. Права суперпользователя требуются только для доступа к системным разделам и данным других приложений.
Почему adb push выдаёт permission denied?
Чаще всего вы пытаетесь записать файл в системный каталог, недоступный для записи без root. Смените путь назначения на /sdcard/ или одну из его подпапок. Также проверьте, что путь указан без опечаток.
Можно ли скопировать файлы, если экран смартфона разбит?
Да, если отладка по USB была включена заранее и компьютер уже авторизован. В этом случае команды adb pull выполнятся без каких-либо действий на экране. Если отладка не включалась, возможности сильно ограничены и зависят от конкретной модели.
Сохраняются ли даты файлов при копировании через ADB?
По умолчанию дата изменения может сброситься на момент копирования. Чтобы сохранить оригинальные метки времени, используйте флаг -a: adb push -a файл путь.
Где скачать ADB и нужно ли его устанавливать?
ADB входит в пакет Platform Tools, который распространяется на официальном сайте для разработчиков Android. Отдельная установка не требуется — достаточно распаковать архив и открыть командную строку в этой папке.