Резервна копія ADB створює 0-байтний файл; запит на поточний пароль резервного копіювання, хоча я ніколи не встановлював його; "Не вдалося встановити пароль" для пароля резервного копіювання на робочому столі


49

Проблема:

Кожен раз, коли я запускаю резервну копію 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.
    

    ... і наступне повідомлення на телефон:

    введіть тут опис зображення

    Не має значення, що я роблю тут (деталі, які слід переглядати).

  4. Я натискаю Back up my dataкнопку (правий нижній кут).

  5. Телефон повертається на головний екран і показує мені 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 Tools: 1.16
Увімкнено налагодження USB.

Зауважте, що моя причина використання резервної копії ADB полягає в тому, щоб повністю завантажувати телефон, щоб він був захищеним, перед тим, як вкоренити його *, тому я можу використовувати інструменти резервного копіювання нандроїдів, такі як резервне копіювання Titanium. Отже, будь-яка пропозиція, що стосується вкорінення мого телефону, була б Catch-22, а не рішенням. Потрібно сказати, що скидання заводських налаштувань також не є рішенням, оскільки це може перемогти всю мету виконання резервного копіювання.

Телефон буде налаштований на синхронізацію з серверами моєї компанії Exchange, і є деякі політики насильницьких сервера. Я думав, що пристрій було зашифровано, коли я вперше налаштував синхронізацію з обліковим записом компанії, але, мабуть, він наразі не зашифрований. Насправді саме це і привело в рух цю ланцюжок подій: я отримую повідомлення про те, що мені потрібно зашифрувати пристрій, щоб продовжувати підключення до серверів компанії. Я хочу взяти резервну копію nandroid перед шифруванням, що вимагає вкорінення, і я хочу використовувати резервну копію ADB перед вкоріненням.


* Так, я знаю, що Towelroot вважається безпечним, але я б не ризикував, і я хотів би вирішити цю проблему або хоча б зрозуміти цю проблему, якщо в майбутньому виникнуть проблеми.


У мене було кілька проблем з ADB на одному з моїх планшетів (вкорінене чи ні, в обох випадках), які були схожими (просто навпаки: хоч adb backupпрацювали нормально, adb restoreзавжди виходили з ладу). Виявилося, це проблема з дозволом (виробник заплутався з ПЗУ), тому adb restoreне зміг прочитати файл резервної копії, як тільки він був переданий на пристрій. Трохи складно було знайти, і я не впевнений, чи справді щось подібне справді має місце; але це, можливо, варто перевірити.
Іззі

2
Для тих, хто опинився б тут із тією ж проблемою, що становить 0 байт: У мене була ця проблема, оскільки я одного разу встановив пароль на робочому столі в розділі "Налаштування" і забув його. Оскільки пристрій укорінений, я дотримувався цієї відповіді (моя) і все пройшло добре.
Firelord

Ви також можете переглянути: code.google.com/p/android/isissue/detail?id=47009 - Якщо ви зашифрували телефон, можливо, вам потрібно буде використовувати пароль шифрування як "поточний пароль" у всіх підказок: або на екрані "Повне резервне копіювання" або в "Парті резервного копіювання робочого столу".
Марко Леогранде

@AdiInbar Ви коли-небудь вирішували це?
codecowboy

Насправді мені знадобилося деякий час, щоб знайти це. Я не знаю, чи не використовував я правильні ключові слова, але це саме те, що мені потрібно!
Томас

Відповіді:


31

Коротка відповідь

Спробуйте скористатися більш ранньою версією adb. 1.0.32 не працював для мене, але 1.0.31 зробив.

Довга відповідь

Я щойно стикався з цією проблемою на Nexus 5 під керуванням CyanogenMod 11 (на базі Android 4.4), використовуючи поточну версію інструментів платформи та 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à, вона спрацювала.

Я трохи копав і натрапив на зміну на Use escape_arg у "adb резервній копії" , яка зараз спричиняє, що всі аргументи будуть цитованими одноразово /system/bin/bu backup. Це пояснює поведінку та одно цитовані аргументи у журналі повідомлення. Однак, схоже, це не відповідає часу, коли ви зіткнулися з помилкою. Також було б запропоновано питання бути набагато ширшим, ніж здається. Тож я вагаюся назвати це причиною, але це може стати гарною відправною точкою для подальшого розслідування.


2
Використання більш ранньої версії (1.0.31) вирішило мою проблему. Це питання stackoverflow.com/q/9555337/1741542, і особливо ця відповідь stackoverflow.com/a/23022718/1741542, допомогло мені знайти більш ранню версію, наприклад, platform-tools_r20-linux.zip.
Олаф Дієтше

Схоже, це працює не з усіма моделями. Хоча я без проблем робив повну резервну копію Samsung S3 mini (Android 4.2), я не міг цього зробити з планшетом, який є на Android 4.0. Я спробував все від adb-r10 до adb-r23 (за винятком adb-r15), не маючи успіху.
Олаф Дієтче

4
У мене була схожа проблема з adb 1.0.32 та Nexus 5 (Android 6). Я вирішив це шляхом явного цитування аргументів резервного копіювання, тобто виконання adb backup '-noapk -noshared -all -nosystem'замість adb backup -noapk -noshared -all -nosystem(всередині оболонки bash). Без лапок я отримую повідомлення logcat на зразок цього: "невідомий прапор резервного копіювання -all: -nosystem: -noapk", "не постачаються резервні пакети, а також не надано ні спільних, ні всіх", і нарешті "Готово."
maxschlepzig

Нарешті я отримав повну резервну копію на Android 4.0. Дурний мене, це було просто перезавантаження планшета, який мене змусив.
Олаф Дієше

5
Дякую! До речі, ви можете завантажити adb 1.0.31 для всіх платформ тут: ftp.mozilla.org/pub/labs/r2d2b2g
eWolf

16

Спираючись на відповідь kevenoid, це може залежати від того, яка версія adb працює на телефоні.

Ви можете дізнатися, у якій версії телефон працює на самому світі, виконавши такі дії:

Спочатку з’ясуйте, яку версію ви працюєте на робочому столі

adb version

Потім відкрийте оболонку телефону

adb shell

Як тільки оболонка відкрита, ви можете запустити

adb version

Потім вийдіть з оболонки, запустивши

exit

Я виявив, що в моєму телефоні працює версія 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

Інші платформи:


Чи є можливість оновити версію adb на телефоні?
Бін Ван

10

Інші відповіді щодо цитованих аргументів команди є точними. Я виявив, що якщо уникнути пробілів між аргументами, це спрацює.

Подобається це: adb backup -apk\ -shared\ -all\ -system


Це може бути не вирішенням проблеми ОП, але це краще рішення проблеми @ Кевіноїда, ніж використання старшої АБР, яка не працювала для мене.
Мисливець Перрін

Це дублікат відповіді Кевіноїда без обґрунтування. Однак для мене це спрацювало добре, і я вважаю за краще використовувати \ to '
Ніл Мейхью

1
Це рішення спрацювало для мене, не потрібно зменшувати adb
freethinker

Я можу підтвердити підозру @HunterPerrin, що це інша проблема, тому що я спробував це перше, і це не вирішило мою проблему, але друге я пішов на 1.0.31 adb, він почав правильно копіювати
Sirens

7

Жоден із способів вирішення проблем тут не працював для мене, і я не хочу знижувати свої інструменти SDK. Ось що я придумав: пропустіть adb backupна комп’ютер і перейдіть прямо до пристрою через adb shell.

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

$ adb shell
shell@jflte:/ $ bu 1 backup -apk app.package.name > /sdcard/backup.ab
shell@jflte:/ $ 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.


4

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

У випадку, якщо це має значення, мій телефон - це Samsung Galazy Note 2 AT&T SGH-i317 під керуванням Android 5.1 / Cyanogenmod 12.1.


2
Я щось бентежу, чи слід це замість цього розміщувати як відповідь чи коментар. ОП показує, що він використовує одиночний тире, а не подвійний тире, тому ваша відповідь, ймовірно, пропустила позначку. Я визнаю, що ця відповідь є інформативною (додаткове значення), але, здається, не відповідає на питання ОП.
Андрій Т.

Це вирішило мою проблему.
Джон Фріман,

Будь ласка, опублікуйте свої фактичні командні рядки.
RoboJ1M

2

Вам потрібно виконати команду резервного копіювання adb у версії adb 1.0.31.

Для Windows я зробив:

Журнал:

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

сервер adb застарів. вбивство ...

  • демон розпочався успішно *

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

... потім поверніть все до нормального.


1

Гаразд, ось як я виправив свою.

Я спробував рішення мисливця Перріна:

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

Але він просто повернувся одразу без помилок, без резервного екрана телефону.

Через спроби та помилки це працювало для мене:

adb backup -all\

1

Я думаю, що у мене є рішення для тих, хто використовує 1.0.32:

введіть пароль, коли з'явиться запит на екрані Android

Незважаючи на те, що він говорить, що він використовуватиме пароль за замовчуванням, якщо ви не введете жодного, я вважаю, що це не так, а adb 1.0.32, можливо, не дозволяє створювати незашифровані резервні копії.

Введення пароля працювало для мене, а потім я витягнув його з файлу тарінгу, використовуючи "Резервне копіювання Android" (Warning Sourceforge) та "Розширення криптографії Java (JCE) Unlimited Strength Jurisdiction Policy" .


1

Я зіткнувся із зворотною проблемою: 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.