ADB pull: примеры использования команды для копирования файлов с Android

Команда 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

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

Пример 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.

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

📊 Для чего вы чаще всего используете adb pull?
Резервное копирование фото и видео
Извлечение логов и отчётов об ошибках
Копирование баз данных приложений
Перенос файлов с нерабочего экрана

Пример 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-мышью или сервисным центром.