Команда adb pull возвращает ошибку remote object does not exist чаще всего из-за неправильно указанного пути на устройстве — например, когда пользователь пытается скопировать /sdcard/DCIM, а фотографии на самом деле лежат в /sdcard/DCIM/Camera или на внешней карте памяти с другим именем каталога. Прежде чем запускать копирование, стоит проверить реальный путь через adb shell ls — это избавит от лишних попыток.
Команда adb pull предназначена для переноса файлов и целых директорий с Android-устройства на компьютер через Android Debug Bridge. Это штатный инструмент из пакета Android SDK Platform-Tools, он не требует root-прав для работы с общедоступными разделами и не изменяет данные на устройстве — только считывает их. Ниже разберём синтаксис, рабочие примеры и типичные ошибки.
Синтаксис команды adb pull
Базовый формат команды выглядит так:
adb pull <путь на устройстве> [путь на компьютере]
Первый аргумент — обязательный: это файл или каталог на Android-устройстве. Второй аргумент указывает, куда сохранить данные на ПК. Если его опустить, файл попадёт в текущую рабочую директорию терминала — ту папку, из которой запущена команда.
Обратите внимание на разделители путей: на устройстве всегда используются прямые слэши /, а на Windows в локальном пути допустимы обратные \. Пути с пробелами нужно заключать в кавычки.
Подготовка: подключение устройства
Без корректного подключения любая команда ADB вернёт ошибку. Порядок действий одинаков для большинства устройств:
- 🔌 Включите отладку по USB в разделе «Для разработчиков» на смартфоне (он активируется после нескольких нажатий на «Номер сборки» в разделе «О телефоне»).
- 🔗 Подключите устройство кабелем USB, который поддерживает передачу данных, а не только зарядку.
- ✅ Выполните
adb devicesи подтвердите запрос на авторизацию отладки на экране смартфона. - 📂 Проверьте нужный путь командой
adb shell ls /sdcard/, чтобы убедиться, что файл существует.
Если в выводе adb devices устройство отображается со статусом unauthorized, на экране телефона нужно подтвердить диалог доверия. Статус offline обычно означает проблему с кабелем или драйвером.
☑️ Подготовка к копированию через adb pull
Пример 1: копирование одного файла
Самый частый сценарий — забрать конкретный файл, например фотографию или базу данных приложения:
adb pull /sdcard/DCIM/Camera/IMG_0001.jpg C:\Users\User\Pictures\
Здесь файл IMG_0001.jpg из папки камеры копируется в каталог изображений на Windows. Если целевая папка не существует, поведение зависит от ситуации: при указании несуществующего пути с именем файла ADB может создать файл с таким именем, поэтому надёжнее заранее создать каталог назначения.
Для Linux или macOS команда отличается только локальным путём:
adb pull /sdcard/Download/report.pdf ~/Documents/
Пример 2: копирование целой папки
Чтобы выгрузить каталог целиком, укажите путь к папке на устройстве:
adb pull /sdcard/DCIM C:\Backup\Phone
Команда рекурсивно скопирует всё содержимое /sdcard/DCIM, включая вложенные каталоги. Имена файлов и структура папок сохраняются. Учтите, что если в каталоге тысячи файлов, процесс займёт заметное время — скорость ограничена интерфейсом USB и служебным протоколом ADB.
Прогресс передачи отображается в терминале построчно для каждого файла. Прерывать операцию закрытием окна не стоит: часть файлов окажется скопированной, а текущий файл может остаться обрезанным.
Пример 3: несколько устройств и дополнительные флаги
Когда к компьютеру подключено два устройства или эмулятор, ADB требует указать целевое устройство через серийный номер:
adb -s emulator-5554 pull /sdcard/log.txt ./logs/
Серийный номер берётся из вывода adb devices. Без флага -s команда завершится ошибкой more than one device/emulator.
Полезные опции команды:
- ⚡
-a— сохранить время изменения и права доступа файла, насколько это поддерживает файловая система ПК. - 🔄
-z— включить сжатие при передаче (в новых версиях Platform-Tools), что ускоряет копирование по медленным соединениям. - 🗜
-Z— принудительно отключить сжатие.
Типичные ошибки adb pull и их решения
Большинство проблем сводится к трём сценариям. Разберём каждый.
| Ошибка | Вероятная причина | Решение |
|---|---|---|
| remote object does not exist | Неверный путь на устройстве | Проверить путь через adb shell ls |
| Permission denied | Файл в защищённом разделе, например /data/data/ | Без root доступ ограничен; использовать adb backup или run-as для отлаживаемых приложений |
| no devices/emulators found | Устройство не подключено или не авторизовано | Проверить кабель, отладку по USB и вывод adb devices |
| cannot create file | Нет прав на запись в папку назначения на ПК | Выбрать другой каталог или запустить терминал с нужными правами |
⚠️ Внимание: путь/sdcard/— это символическая ссылка на внутреннее хранилище/storage/emulated/0/. Оба варианта обычно работают, но при странных ошибках стоит попробовать полный путь/storage/emulated/0/....
Ошибка Permission denied при доступе к /data/data/имя.пакета/ — штатное ограничение Android, а не неисправность. Система защищает приватные данные приложений. Для отлаживаемых сборок приложения можно использовать adb shell run-as имя.пакета, но это работает только если сборка помечена как debuggable.
⚠️ Внимание: не пытайтесь получить root-доступ или менять права на системные разделы только ради копирования файлов — это риск повредить систему и аннулировать гарантию. Сначала исчерпайте штатные способы: adb backup, экспорт через само приложение, run-as для отладочных сборок.
Чем adb pull отличается от adb push и других способов передачи
adb push выполняет зеркальную задачу — загружает файлы с компьютера на устройство. Синтаксис идентичен, меняется только направление потока данных. Обе команды работают поверх одного соединения и не требуют сети.
По сравнению с MTP-подключением (режим «Передача файлов») у adb pull есть важное преимущество: он работает, даже когда экран устройства разбит и подтвердить режим передачи на дисплее невозможно — при условии, что отладка по USB была включена и авторизована заранее. Это делает команду основным инструментом спасения данных с повреждённых смартфонов.
Из ограничений стоит назвать скорость: для больших архивов на десятки гигабайт MTP или извлечение карты памяти могут оказаться быстрее. Также ADB не копирует данные, защищённые DRM, и не обходит шифрование пользовательских разделов.
Как скопировать все фото одной командой с фильтрацией
Сам adb pull не поддерживает маски файлов, но можно сначала получить список через adb shell ls /sdcard/DCIM/Camera/.jpg и передать каждый файл в цикле. В Linux это делается одной строкой: for f in $(adb shell ls /sdcard/DCIM/Camera/.jpg); do adb pull "$f" ./photos/; done — в Windows аналог потребует скрипта PowerShell.
Часто задаваемые вопросы
Работает ли adb pull без root-прав?
Да, для общедоступных разделов вроде /sdcard/ root не требуется. Доступ к приватным данным приложений в /data/data/ без root ограничен системой — это штатная защита Android.
Куда сохраняются файлы, если не указать путь на компьютере?
В текущую рабочую директорию терминала — ту папку, из которой запущена команда. Узнать её можно командой cd без аргументов в Windows или pwd в Linux и macOS.
Можно ли использовать adb pull по Wi-Fi?
Да, если устройство подключено через adb connect IP:порт (беспроводная отладка), команда pull работает так же, как по USB. Скорость будет зависеть от качества сети Wi-Fi.
Почему копирование обрывается на середине?
Возможные причины: нестабильный USB-кабель, переход устройства в сон с отключением отладки, нехватка места на диске ПК. Проверьте свободное место, отключите спящий режим на время передачи и попробуйте другой порт USB.
Как скопировать файлы, если экран смартфона разбит?
Если отладка по USB была включена и компьютер ранее авторизован, adb pull сработает без каких-либо действий на экране. Если авторизации не было, подтвердить диалог без дисплея не получится — тогда остаются варианты с OTG-мышью или сервисным центром.