Резервная копия ADB создает 0-байтовый файл; запрашивает текущий пароль для резервного копирования, хотя я никогда не устанавливал его; «Пароль для установки пароля» для пароля для резервного копирования рабочего стола

Проблема:

Каждый раз, когда я запускаю резервное копирование ADB, я получаю сообщение возле нижней части главного экрана, говоря Backup starting..., после чего следует сообщение, в котором Backup finished через несколько секунд , несмотря на то, что я использую 17 ГБ памяти устройства, а результирующий файл резервной копии создается с размером 0 байтов. Я не получаю сообщений об ошибках, никакой обратной связи, указывающей , что что-то не так, не говоря уже о , что неправильно. Он работает, но слишком быстро, и файл резервной копии пуст.

Процесс:

  1. Я подтверждаю, что устройство распознается ADB с помощью команды adb devices и получает следующий вывод:

    List of devices attached
    8e1f368a        device
    
  2. Я выдаю команду резервного копирования ADB (подробности следует).

  3. В командной строке появляется следующее сообщение:

    Now unlock your device and confirm the backup operation.
    

    ... и следующее сообщение на телефоне:

    введите описание изображения здесь>> </p>

<p> Не имеет значения, что я здесь делаю (подробности следует). </p>
</li>
<li> <p> Я нажимаю кнопку <kbd> Back up my data </​​kbd> (нижний правый угол). </p> </li>
<li> <p> Телефон возвращается на главный экран и показывает мне сообщение <code>Backup start ...</code>, а затем сообщение <code>Backup finished</code> через несколько секунд. Создается 0-байтовый файл с именем по умолчанию <strong> backup.ab </strong> или любым другим, что я указал с помощью <strong> -f </strong>. </p> </li>
</ol>
<h1> Команда резервного копирования ADB (используется на шаге 2): </h1>

<p> Я попробовал несколько комбинаций опций, начиная с простого </p>

<pre><code>adb backup -all
</code></pre>

<p> для таких вещей, как </p>

<pre><code>adb backup -all -apk -s 8e1f368a -f 'C: \ Data Files \ PDA \ Backups \ ADB \ GalaxyS4_20140919.ab'
</code></pre>

<p> Я также попытался добавить переключатель <code>-nosystem</code> после прочтения <a href = this и this , который указывает, что попытка включить системную резервную копию на нерасширенное устройство может привести к 0-байтовому файлу и что этот переключатель необходимо использовать. Это не имеет значения, процесс по-прежнему завершается за считанные секунды, и я все равно получаю 0-байтовый файл.

    Запрос пароля «Полная резервная копия» (шаг 3):

    Я уверен, что я никогда раньше не устанавливал пароль для резервного копирования. У меня никогда не было случая установить этот пароль или получить доступ к этой настройке ранее. Однако я пробовал все из следующих действий:

    • Оставьте оба пароля пустыми
    • Оставить «текущий резервный пароль» пустым и ввести новый пароль во втором поле
    • Ввод текущего PIN-кода блокировки экрана и всех PIN-кодов, которые я когда-либо использовал в прошлом, как «текущий пароль для резервного копирования».
    • Ввод каждого пароля, о котором я могу думать, я бы никогда не использовал для чего-либо на этом устройстве.

    Во всех случаях поведение точно такое же, как описано в шаге 5. Я не получаю никаких ошибок или каких-либо признаков того, что что-то не так или что мои пароли являются недействительными, и никаких намеков относительно независимо от того, ожидает ли он текущий пароль или должно ли оно оставаться пустым. (Снимок экрана этот ответ и несколько других форумов поддержки, на которые я смотрел, по-видимому, подразумевают, что «текущий резервный пароль "не будет отображаться, если нет текущего пароля, но это только вывод, ничто не дает понять, действительно ли нужен текущий пароль.)

    Я подозреваю, что запрашиваемый пароль может быть «Настольным резервным паролем», установленным в настройках разработчика:

    введите описание изображения здесь>> </p>

<p> Я никогда не устанавливал этот пароль раньше. Если я попытаюсь установить его, я получаю сообщение с сообщением <code>Не удалось установить пароль для резервного копирования. </Code> </p>

<p> При поиске информации об этой ошибке я столкнулся, по крайней мере, с одним другим случаем, когда кто-то, у кого возникла эта проблема, сказал, что это мешает ему использовать резервную копию АБР, но он не был конкретно о том, что происходит, когда он пытается для использования резервной копии ADB. </p>

<p> Большинство людей, которые получили это сообщение, никогда не устанавливая пароль, прежде чем сказать, что решение должно было оставить текущий пароль пустым, но я попробовал это в первую очередь, и это не сработало. Я нашел <a href= вопрос другого человека который столкнулся с этой проблемой и был уверен, что он не задал пароль до . К сожалению, не похоже, что у него когда-либо было решение или даже объяснение.

    Независимо от того, ищет ли АБР«Настольный пароль для резервного копирования» или пароль шифрования АБР - это что-то отдельное, это пугает мой разум, почему АБР потребует от вас ввести предыдущий пароль, чтобы инициировать новую резервную копию. Я не пытаюсь восстановить, перезаписать или каким-либо образом получить доступ к ранее зашифрованным данным, поэтому даже если ранее был установлен пароль для шифрования для резервной копии , я не могу представить, почему кто-то мог подумать, что это хорошая идея, чтобы предотвратить резервное копирование вашего устройства, если вы не помните, какой пароль вы использовали для шифрования резервных копий в прошлом.

    Дополнительная информация:

    Модель: 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 считается безопасным, но я бы предпочел не рисковать, и я бы хотел решить или, по крайней мере, понять эту проблему, если возникнут связанные проблемы будущее.

46 голосов | спросил Adi Inbar 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 22 Sep 2014 22:37:05 +0400 2014, 22:37:05

10 ответов


29

Короткий ответ

Попробуйте использовать более раннюю версию 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 были некоторые подозрительные записи журнала:

V/BackupManagerService(  811): Requesting full backup: apks=false obb=false shared=false all=false pkgs=[Ljava.lang.String;@4181ffc8
W/BackupManagerService(  811): Unknown package  '-apk' '-obb' '-shared' '-all' '-nosystem', skipping

Если окажется, что устройство интерпретирует параметры командной строки как необязательные аргументы и создает ошибку, потому что они не установлены имена пакетов. Это заставило меня подозревать, что протокол adb или параметры вызова команды /службы были изменены на устройстве относительно хоста, поэтому я попробовал более старую версию adb и voilÃ, это сработало.

Я немного поработал и наткнулся на изменение Использование escape_arg в "резервной копии adb" , который теперь приводит к тому, что все аргументы должны быть одинарными кавычками при вызове /system/bin/bu backup. Это объясняет поведение и однокасканные аргументы в сообщении журнала. Однако, похоже, оно не соответствует времени, в которое вы столкнулись с ошибкой. Это также предполагает, что этот вопрос будет гораздо более распространенным, чем кажется. Поэтому я не решаюсь назвать это причиной, но это может стать хорошей отправной точкой для дальнейшего расследования.

ответил Kevinoid 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 22 Sep 2015 03:35:33 +0300 2015, 03:35:33
12

Основываясь на ответе kevenoid, это может зависеть от того, какая версия adb работает на телефоне.

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

Сначала выясните, какую версию вы используете на своем рабочем столе.

adb version

Затем откройте оболочку на телефоне

adb shell

Как только оболочка открыта, вы можете запустить

adb version

Затем выйдите из оболочки, запустив

exit

Я обнаружил, что на моем телефоне была запущена версия 1.0.31, а не 1.0.32 (это записка samsung 2)

Я пробовал использовать кавычки или escape-символы, такие как Hunter, но ни один из них не работал из командной строки Windows. Однако понижение рейтинга устранило проблему несовместимости между двумя версиями.

Мне удалось найти более старую версию, следуя инструкциям здесь: https://stackoverflow.com/a/23022718/1741542

Я использовал ссылку для загрузки: http : //dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip

Другие платформы:

ответил KroniK907 29 TueEurope/Moscow2015-12-29T23:06:58+03:00Europe/Moscow12bEurope/MoscowTue, 29 Dec 2015 23:06:58 +0300 2015, 23:06:58
9

Другие ответы о цитируемых аргументах команды являются точными. Я обнаружил, что если вы избежите пробелов между аргументами, он работает.

Пример: adb backup -apk\ -shared\ -all\ -system

ответил Hunter Perrin 1 TueEurope/Moscow2015-12-01T23:24:02+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2015 23:24:02 +0300 2015, 23:24:02
5

Ни один из обходных решений для меня не работал, и я не хочу понижать инструменты SDK. Вот что я придумал: skip adb backup на компьютере и перейти прямо к устройству через adb shell.

$adb version
Android Debug Bridge version 1.0.35
Revision fc2a139a55f5-android

$ adb shell
[email protected]:/ $ bu 1 backup -apk app.package.name > /sdcard/backup.ab
[email protected]:/ $ exit

$adb pull /sdcard/backup.ab
[100%] /sdcard/backup.ab

Это вызывает /system/bin/bu и выгружает файл резервной копии в STDOUT (дескриптор файла # 1). Параметры - это те же adb backup <params> -> bu 1 backup <params>. Выход перенаправляется в файл на устройстве, а затем может быть вытащен как любой файл.

Единственный недостаток заключается в том, что вы не можете выполнить полную резервную копию, если ваше устройство больше половины. Это можно обойти, если у вас есть внешний слот SdCard. bu может писать там даже на Android 4.4.2, потому что это системное приложение. /mnt/extSdCard/backup.ab работал для меня как /sdcard.

ответил TWiStErRob 27 PMpWed, 27 Apr 2016 15:44:53 +030044Wednesday 2016, 15:44:53
3

sigh Мне очень жаль, если это так, и вы, похоже, тщательно оцениваете свои скриншоты и командные строки, но я обнаружил, что доволен теми же симптомами и думал, что буду пост на случай, если будущие первооткрыватели сделают это здесь. Оказывается, adb very выбирает одинарные или двойные тире в своих опциях. Для меня двойные тире воспроизводят этот случай точно: одно и то же сообщение на телефоне, то же 0-байтовый файл. Одиночные тире , хотя имена длинных аргументов работают как шарм.

В случае, если это имеет значение, мой телефон - Samsung Galazy Note 2 AT & T SGH-i317, работающий под управлением Android 5.1 /Cyanogenmod 12.1.

ответил Matt 10 Maypm15 2015, 20:42:03
1

Вам нужно выполнить команду резервного копирования adb в версии 1.0.31.

Для окон, которые я сделал:

Log:

$ adb backup -apk -obb -shared -all -system -f bckp.ab

Сервер adb устарел. убийство ...

  • успешно запущен daemon *

Теперь откройте устройство и подтвердите операцию резервного копирования.

... затем установите все в нормальное состояние.

ответил eee 19 J000000Tuesday16 2016, 17:23:39
0

Хорошо, вот как я исправил свою.

Я попробовал решение Хантера Перрена:

adb backup -apk\ -shared\ -all\ -system

Но он сразу же возвращается без ошибок, без экрана резервного копирования на телефоне.

Сквозь проб и ошибок это сработало для меня:

adb backup -all\
ответил RoboJ1M 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 19:05:05 +0300000000pmTue, 02 Feb 2016 19:05:05 +030016 2016, 19:05:05
0

Я думаю, что у меня есть решение для тех, кто использует 1.0.32:

введите пароль при появлении запроса на экране андроида

Несмотря на то, что он говорит, что будет использовать пароль по умолчанию, если вы его не вводите, я считаю, что этого не происходит, а adb 1.0.32, возможно, не позволяет создавать незашифрованные резервные копии.

Ввод пароля работал для меня, тогда я в конечном итоге использовал «Экран резервного копирования Android» (Warning Sourceforge) и " Расширение Java Cryptography Extension (JCE) Неограниченная политика юриспруденции ", чтобы извлечь ее в tar файл.

ответил Catskul 5 Jam1000000amThu, 05 Jan 2017 07:05:13 +030017 2017, 07:05:13
0

Я столкнулся с обратной задачей: 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

ответил mow 21 FebruaryEurope/MoscowbWed, 21 Feb 2018 02:46:40 +0300000000amWed, 21 Feb 2018 02:46:40 +030018 2018, 02:46:40
0

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

ответил sony z1 4 PM000000110000003031 2018, 23:22:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132