Проблема:
Каждый раз, когда я запускаю резервное копирование ADB, я получаю сообщение в нижней части главного экрана Backup starting...
, за которым следует сообщение, говорящее Backup finished
несколько секунд спустя, несмотря на то, что я использую 17 ГБ памяти устройства, и в результате создается файл резервной копии. размером 0 байт. Я не получаю ни сообщений об ошибках, ни каких-либо отзывов о том, что что- то не так, не говоря уже о том, что не так. Похоже, что работает, но слишком быстро, и файл резервной копии пуст.
Процесс:
Я подтверждаю, что устройство распознает устройство с помощью
adb devices
команды, и получаю следующий вывод:List of devices attached 8e1f368a device
Я выполняю команду резервного копирования ADB (подробности приведены ниже).
Я получаю следующее сообщение в командной строке:
Now unlock your device and confirm the backup operation.
... и следующий запрос на телефоне:
Не имеет значения, что я делаю здесь (подробности следуют).
Я нажимаю на Back up my dataкнопку (нижний правый угол).
Телефон возвращается на домашний экран и показывает мне
Backup starting...
сообщение, а затемBackup finished
сообщение через несколько секунд. Создается 0-байтовый файл с именем backup.ab по умолчанию или любым другим, указанным с помощью ключа -f .
Команда резервного копирования ADB (используется на шаге 2):
Я пробовал несколько комбинаций вариантов, начиная от простого
adb backup -all
на такие вещи, как
adb backup -all -apk -s 8e1f368a -f 'C:\Data Files\PDA\Backups\ADB\GalaxyS4_20140919.ab'
Я также попытался добавить -nosystem
переключатель после прочтения этого и этого , что указывает на то, что попытка включить резервную копию системы на некорневое устройство может привести к получению 0-байтового файла, и этот переключатель должен использоваться. Это не имеет значения, процесс все еще завершается в считанные секунды, и я все еще получаю 0-байтовый файл.
Запрос пароля «Полная резервная копия» (шаг 3):
Я совершенно уверен, что никогда не устанавливал резервный пароль раньше. У меня никогда не было возможности установить этот пароль или получить доступ к этому параметру ранее. Тем не менее, я попробовал все следующее:
- Оставив оба пароля пустыми
- Оставьте поле «текущий резервный пароль» пустым и введите новый пароль во втором поле.
- Ввод текущего PIN-кода блокировки экрана и всех PIN-кодов, которые я когда-либо использовал в прошлом как «текущий резервный пароль».
- Вводя каждый пароль, который я могу себе представить, я бы когда-либо использовал что-либо на этом устройстве
Во всех случаях поведение точно такое же, как описано в шаге 5. Я не получаю никаких ошибок или каких-либо указаний на то, что что-то не так или что мои пароли недействительны, и нет никаких подсказок относительно того, ожидает ли он текущий пароль или поле должно быть пустым (Снимок экрана в этом ответе и на нескольких других форумах поддержки, на которые я смотрел, похоже, подразумевает, что поле «текущий пароль резервной копии» не будет отображаться, если нет текущего пароля, но это всего лишь логический вывод; ничего не ясно текущий пароль действительно требуется.)
Я подозреваю, что запрашиваемым паролем может быть «Пароль резервного копирования рабочего стола», заданный в параметрах разработчика:
Я никогда не устанавливал этот пароль раньше. Если я пытаюсь установить один, я получаю сообщение о том,Failed to set backup password.
При поиске информации об этой ошибке я обнаружил, по крайней мере, еще один случай, когда кто-то, у кого была эта проблема, сказал, что это мешает ему использовать резервное копирование ADB, но он не уточнил, что происходит, когда он пытается использовать ADB. резервный.
Большинство людей, которые получили это сообщение, никогда не устанавливая пароль ранее, говорят, что решение было оставить текущий пароль пустым, но я попробовал это в первую очередь, и это не сработало. Я нашел вопрос от другого человека, который столкнулся с этой проблемой и был уверен, что он ранее не устанавливал пароль . К сожалению, не похоже, что он когда-либо получил решение или даже объяснение.
Независимо от того, ищет ли ADB «Пароль резервного копирования рабочего стола» или пароль шифрования ADB является чем-то отдельным, мне непонятно, почему ADB потребовал бы от вас ввести предыдущий пароль, чтобы инициировать новое резервное копирование. Я не пытаюсь восстановить, перезапись, или в каком - либо доступе пути к ранее зашифрованным данным, поэтому даже если пароль для шифрования резервной копии уже ранее был установлен, что я не могу себе представить , почему кто -то будет думать , что это идея хорошая , чтобы помешать вам резервное копирование устройства, если вы не помните, какой пароль вы использовали для шифрования резервных копий в прошлом.
Дополнительная информация:
Модель: Samsung Galaxy S4 SCH-I545
Версия ядра: 3.4.0
версия ОС: 4.4.2
Android SDK версии Инструменты: 1,16
отладки USB включен.
Обратите внимание, что моя причина для использования резервного копирования ADB - сделать полную резервную копию моего телефона, чтобы быть в безопасности, прежде чем рутировать его *, чтобы я мог использовать инструменты резервного копирования nandroid, такие как резервное копирование Titanium. Таким образом, любое предложение, касающееся рутирования моего телефона, будет Catch-22, а не решением. Излишне говорить, что сброс к заводским настройкам также не является решением, так как он лишил бы цели выполнять резервное копирование.
Телефон будет настроен на синхронизацию с серверами моей компании Exchange, и есть некоторые политики насильственных сервера. Я думал, что устройство было зашифровано, когда я впервые настроил синхронизацию с учетной записью компании, но, очевидно, в настоящее время оно не зашифровано. Фактически, именно это и привело в движение эту цепочку событий: я получаю сообщение о том, что мне нужно зашифровать устройство, чтобы продолжить подключение к серверам компании. Я хочу сделать резервную копию Nandroid перед шифрованием, которое требует рутирования, и я хочу использовать резервное копирование ADB перед рутированием.
* Да, я знаю, что Towelroot считается безопасным, но я бы предпочел не рисковать, и я хотел бы решить или, по крайней мере, понять эту проблему в случае возникновения проблем в будущем.
источник
adb backup
работали нормально,adb restore
всегда терпели неудачу). Оказалось, что это была проблема с правами доступа (производитель перепутался с ПЗУ), поэтомуadb restore
не смог прочитать файл резервной копии после его передачи на устройство. Было немного сложно найти, и я не уверен, действительно ли здесь что-то похожее; но это может стоить проверить.Ответы:
Краткий ответ
Попробуйте использовать более раннюю версию ADB. 1.0.32 не работал для меня, но 1.0.31 работал.
Длинный ответ
Я только что столкнулся с этой проблемой на Nexus 5 под управлением CyanogenMod 11 (на базе Android 4.4) с использованием текущей версии Platform Tools и ADB (Android Debug Bridge версия 1.0.32 Revision eac51f2bb6a8-android).
Используя
adb logcat
для просмотра журналов устройства, я заметил, что после вызоваadb backup -apk -obb -shared -all -nosystem
были некоторые подозрительные записи журнала:Когда кажется, что устройство интерпретирует параметры командной строки как аргументы, не являющиеся параметрами, и выдает ошибку, поскольку они не являются установленными именами пакетов. Это заставило меня подозревать, что протокол adb или параметры вызова команды / службы изменились на устройстве относительно хоста, поэтому я попробовал старую версию adb и voilà, она работала.
Я немного покопался и наткнулся на изменение Использовать escape_arg в «резервной копии adb» , которое теперь приводит к тому, что все аргументы заключаются в одинарные кавычки при вызове
/system/bin/bu backup
. Это объясняет поведение и аргументы в одинарных кавычках в сообщении журнала. Однако оно не соответствует времени, когда вы столкнулись с ошибкой. Это также предполагает, что проблема будет гораздо более распространенной, чем кажется. Поэтому я не решаюсь назвать это причиной, но это может стать хорошей отправной точкой для дальнейшего расследования.источник
adb backup '-noapk -noshared -all -nosystem'
вместоadb backup -noapk -noshared -all -nosystem
(внутри оболочки bash). Без кавычек я получаю сообщения logcat, такие как: «неизвестный флаг резервного копирования -all: -nosystem: -noapk», «не поставляются пакеты резервного копирования и ни -shared, ни -all не передаются» и, наконец, «Finished».Основываясь на ответе kevenoid, это может зависеть от того, какая версия ADB работает на телефоне.
Вы можете узнать, какая версия телефона работает изначально, выполнив следующие действия:
Сначала выясните, какую версию вы используете на своем рабочем столе
Затем откройте оболочку на вашем телефоне
Когда оболочка открыта, вы можете запустить
Затем выйдите из оболочки, запустив
Я обнаружил, что мой телефон работает под управлением версии 1.0.31, а не 1.0.32 (это samsung note 2)
Я пытался использовать кавычки или экранирующие символы, как показал Хантер, но ни один из них не работал из командной строки Windows. Однако понижение версии исправило проблему несовместимости между двумя версиями.
Мне удалось найти более старую версию, следуя инструкциям здесь: https://stackoverflow.com/a/23022718/1741542
Ссылка для скачивания, которую я использовал, была:
http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip
Другие платформы:
http://dl-ssl.google.com/android/repository/platform-tools_r20-macosx.zip
http://dl-ssl.google.com/android/repository/platform-tools_r20-linux.zip
источник
Другие ответы о цитируемых аргументах команды точны. Я обнаружил, что если вы избегаете пробелов между аргументами, это работает.
Нравится:
adb backup -apk\ -shared\ -all\ -system
источник
Ни один из обходных путей для меня здесь не сработал, и я не хочу понижать свои инструменты SDK. Вот что я придумала: пропустить
adb backup
на компьютере и перейти прямо к устройству черезadb shell
.Это вызывает
/system/bin/bu
и сбрасывает файл резервной копии в STDOUT (дескриптор файла # 1). Параметры одинаковыadb backup <params>
->bu 1 backup <params>
. Вывод перенаправляется в файл на устройстве, а затем может быть извлечен, как любой файл.Единственным недостатком является то, что вы не можете сделать полную резервную копию, если ваше устройство заполнено более чем наполовину. Это можно обойти, если у вас есть внешний слот SdCard.
bu
Можно написать даже на Android 4.4.2, потому что это системное приложение./mnt/extSdCard/backup.ab
работал для меня так же, как/sdcard
.источник
вздох, мне очень жаль, если это так, и вы, кажется, осторожны, судя по вашим скриншотам и командным строкам, но я обнаружил, к своему огорчению, те же симптомы и подумал, что опубликую на всякий случай, если будущие первооткрыватели сделают это здесь. Оказывается, adb очень требователен к одинарным или двойным тире в своих настройках. Для меня двойные тире точно воспроизвели этот случай: та же подсказка на телефоне, тот же 0-байтовый файл. Одиночные тире, даже если есть длинные имена аргументов, работающие как шарм.
В случае, если это имеет значение, мой телефон является Samsung Galazy Note 2 AT & T SGH-i317 под управлением Android 5.1 / Cyanogenmod 12.1.
источник
Вам нужно выполнить команду резервного копирования adb в версии adb 1.0.31.
Для окон я сделал:
Журнал:
$ adb backup -apk -obb -shared -all -system -f bckp.ab
Сервер ADB устарел. убийство ...
Теперь разблокируйте устройство и подтвердите операцию резервного копирования.
... затем верните все в нормальное состояние.
источник
ОК, так я исправил свой.
Я попробовал решение Хантера Перрина:
Но он сразу же вернулся без ошибок, без экрана резервного копирования на телефоне.
Методом проб и ошибок это сработало для меня:
источник
Я думаю, у меня есть решение для тех, кто использует 1.0.32:
введите пароль при появлении запроса на экране Android
Несмотря на то, что в нем говорится, что он будет использовать пароль по умолчанию, если вы его не введете, я полагаю, что это не так, и adb 1.0.32, возможно, не позволяет создавать незашифрованные резервные копии.
Ввод пароля работал для меня, а затем я использовал «Извлечение резервной копии Android» (Warning Sourceforge) и «Политику юрисдикции неограниченного расширения Java Cryptography Extension (JCE)» для извлечения его в файл tar.
источник
Я столкнулся с обратной проблемой: 1.0.31 с более новым телефоном (Android 7) тоже дает сбой. 1.0.31 использует: в качестве разделителя при передаче аргументов на телефон. Как
adb logcat -s BackupManagerService
видно, новый adb на телефоне также не может обрабатывать старый стиль: к02-19 01:59:44.330 1100 9830 W BackupManagerService: Unknown package com.gameloft.android.ANMP.GloftPOHM:-apk, skipping
счастью, новый adb также принимает пробелы в качестве разделителя, поэтому работает заключение аргументов в двойные кавычки, например:adb.exe backup "com.gameloft.android.ANMP.GloftPOHM -apk" -f game-backup.ab
источник