Cadangan ADB membuat file 0-byte; meminta kata sandi cadangan saat ini meskipun saya tidak pernah menetapkannya; “Gagal mengatur kata sandi” untuk kata sandi cadangan Desktop

49

Masalah:

Setiap kali saya menjalankan cadangan ADB, saya mendapatkan pesan di dekat bagian bawah layar beranda mengatakan Backup starting..., diikuti oleh pesan yang mengatakan Backup finished beberapa detik kemudian terlepas dari kenyataan bahwa saya menggunakan 17 GB memori perangkat, dan file cadangan yang dihasilkan dibuat dengan ukuran 0 byte. Saya tidak menerima pesan kesalahan, tidak ada umpan balik apa pun yang menunjukkan bahwa ada sesuatu yang salah, apalagi apa yang salah. Tampaknya berfungsi, tetapi terlalu cepat, dan file cadangan kosong.

Proses:

  1. Saya mengkonfirmasi bahwa perangkat dikenali oleh ADB menggunakan adb devicesperintah, dan menerima output berikut:

    List of devices attached
    8e1f368a        device
    
  2. Saya mengeluarkan perintah cadangan ADB (detail untuk diikuti).

  3. Saya mendapatkan pesan berikut di prompt perintah:

    Now unlock your device and confirm the backup operation.
    

    ... dan perintah berikut di ponsel:

    masukkan deskripsi gambar di sini

    Tidak ada bedanya apa yang saya lakukan di sini (detail untuk diikuti).

  4. Saya mengetuk Back up my datatombol (sudut kanan bawah).

  5. Telepon kembali ke layar beranda dan menunjukkan kepada saya Backup starting...pesan, lalu Backup finishedpesan beberapa detik kemudian. File 0-byte dibuat, dinamai backup.ab default atau apa pun yang saya tentukan dengan saklar -f .

Perintah cadangan ADB (digunakan pada langkah 2):

Saya sudah mencoba banyak kombinasi opsi, mulai dari yang sederhana

adb backup -all

untuk hal-hal seperti

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

Saya juga mencoba menambahkan -nosystemsakelar setelah membaca ini dan ini , yang menunjukkan bahwa mencoba memasukkan cadangan sistem pada perangkat yang tidak di-root dapat menghasilkan file 0-byte, dan sakelar ini harus digunakan. Tidak ada bedanya, prosesnya masih selesai dalam hitungan detik dan saya masih mendapatkan file 0-byte.

Prompt kata sandi "Cadangan penuh" (langkah 3):

Saya cukup yakin saya belum pernah menetapkan kata sandi cadangan sebelumnya. Saya tidak pernah memiliki kesempatan untuk mengatur kata sandi ini atau mengakses pengaturan ini dengan cara apa pun sebelumnya. Namun, saya telah mencoba semua hal berikut:

  • Biarkan kedua kata sandi kosong
  • Biarkan "kata sandi cadangan saat ini" kosong dan masukkan kata sandi baru di kotak kedua
  • Memasukkan PIN kunci layar saat ini dan semua PIN yang pernah saya gunakan di masa lalu sebagai "kata sandi cadangan saat ini".
  • Memasukkan setiap kata sandi yang dapat saya pikirkan akan pernah saya gunakan untuk apa pun di perangkat ini

Dalam semua kasus, perilaku ini persis sama dengan yang dijelaskan pada langkah 5. Saya tidak mendapatkan kesalahan atau indikasi apa pun bahwa ada sesuatu yang salah atau kata sandi saya tidak valid, dan tidak ada petunjuk apakah itu benar-benar mengharapkan kata sandi saat ini atau apakah itu bidang harus dibiarkan kosong. (Cuplikan layar dalam jawaban ini dan beberapa forum dukungan lain yang telah saya lihat tampaknya menyiratkan bahwa kotak "kata sandi cadangan saat ini" tidak akan ditampilkan jika tidak ada kata sandi saat ini, tapi itu hanya kesimpulan, tidak ada yang menjelaskan apakah kata sandi saat ini sebenarnya diperlukan.)

Saya menduga kata sandi yang diminta mungkin adalah "Kata sandi cadangan desktop" yang diatur dalam opsi Pengembang:

masukkan deskripsi gambar di sini

Saya belum pernah menetapkan kata sandi itu sebelumnya. Jika saya mencoba untuk mengatur satu, saya mendapat pesan yang mengatakanFailed to set backup password.

Dalam mencari informasi tentang kesalahan ini, saya telah menemukan setidaknya satu kasus lain di mana seseorang yang mengalami masalah ini mengatakan ini mencegahnya menggunakan cadangan ADB, tetapi dia tidak spesifik tentang apa yang terjadi ketika dia mencoba menggunakan ADB cadangan.

Sebagian besar orang yang menerima pesan ini tidak pernah menetapkan kata sandi sebelum mengatakan bahwa solusinya adalah membiarkan kata sandi saat ini kosong, tetapi saya mencobanya sejak awal dan itu tidak berhasil. Saya menemukan pertanyaan oleh orang lain yang mengalami masalah ini dan yakin dia belum menetapkan kata sandi sebelumnya . Sayangnya sepertinya dia tidak pernah mendapatkan solusi atau bahkan penjelasan.

Terlepas dari apakah ADB sedang mencari "kata sandi cadangan Desktop" atau kata sandi enkripsi ADB adalah sesuatu yang terpisah, itu membuat saya bingung mengapa ADB meminta Anda untuk memasukkan kata sandi sebelumnya untuk memulai pencadangan baru. Aku tidak berusaha untuk mengembalikan, menimpa, atau dengan cara akses data yang sebelumnya dienkripsi, sehingga bahkan jika sandi enkripsi untuk cadangan telah sebelumnya telah ditetapkan, saya tidak bisa membayangkan mengapa orang akan berpikir itu ide yang baik untuk mencegah Anda dari mencadangkan perangkat Anda jika Anda tidak ingat kata sandi apa yang Anda gunakan untuk mengenkripsi cadangan di masa lalu.

Informasi tambahan:

Model: Samsung Galaxy S4 SCH-I545
Versi kernel: 3.4.0
Versi OS: 4.4.2 Versi
Android SDK Tools: 1.16
USB debugging diaktifkan.

Perhatikan bahwa alasan saya menggunakan cadangan ADB adalah untuk mengambil cadangan penuh telepon saya agar berada di sisi yang aman sebelum me-rootingnya * sehingga saya dapat menggunakan alat cadangan nandroid seperti cadangan Titanium. Jadi, setiap saran yang melibatkan rooting ponsel saya akan menjadi Catch-22, bukan solusi. Tidak perlu dikatakan, reset pabrik juga bukan solusi, karena itu akan mengalahkan seluruh tujuan melakukan backup.

Ponsel ini dibentuk untuk sinkronisasi dengan Exchange server perusahaan saya, dan ada beberapa kebijakan diberlakukan oleh server. Saya berpikir bahwa perangkat dienkripsi ketika saya pertama kali mengatur sinkronisasi dengan akun perusahaan, tetapi ternyata saat ini tidak dienkripsi. Sebenarnya, itulah yang mengatur rantai peristiwa ini: Saya menerima pesan yang memberi tahu saya bahwa saya harus mengenkripsi perangkat agar dapat terus terhubung ke server perusahaan. Saya ingin mengambil cadangan nandroid sebelum mengenkripsi, yang memerlukan rooting, dan saya ingin menggunakan cadangan ADB sebelum rooting.


* Ya, saya sadar bahwa Towelroot konon aman, tapi saya lebih suka tidak mengambil risiko, dan saya ingin menyelesaikan atau setidaknya memahami masalah ini jika masalah terkait muncul di masa depan.

Adi Inbar
sumber
Saya memiliki beberapa masalah dengan ADB pada salah satu tablet saya (di-root atau tidak, dalam kedua kasus) yang serupa (hanya sebaliknya: ketika adb backupbekerja dengan baik, adb restoreselalu gagal). Ternyata itu adalah masalah izin (pabrikan telah mengacaukan ROM), jadi adb restoretidak dapat membaca file cadangan setelah dipindahkan ke perangkat. Agak sulit ditemukan, dan saya tidak yakin apakah yang serupa benar-benar terjadi di sini; tapi mungkin perlu diperiksa.
Izzy
2
Bagi mereka yang akan berakhir di sini dengan masalah 0bytes yang sama: Saya punya masalah ini karena saya pernah mengatur kata sandi desktop di bawah Pengaturan dan melupakannya. Karena perangkat di-root, saya mengikuti jawaban ini (milik saya) dan semuanya berjalan dengan baik.
Firelord
Anda mungkin juga melihat: code.google.com/p/android/issues/detail?id=47009 - Jika Anda telah mengenkripsi ponsel Anda, Anda mungkin perlu menggunakan kata sandi enkripsi sebagai "kata sandi saat ini" di semua petunjuk: baik di layar "Cadangan penuh", atau di "Sandi pencadangan desktop".
Marco Leogrande
@AdiInbar apakah Anda pernah menyelesaikan ini?
codecowboy
Sebenarnya butuh beberapa saat untuk menemukan ini. Saya tidak tahu apakah saya tidak menggunakan kata kunci yang tepat tetapi inilah yang saya butuhkan!
Thomas

Jawaban:

31

Jawaban singkat

Coba gunakan versi sebelumnya dari adb. 1.0.32 tidak bekerja untuk saya, tetapi 1.0.31 berhasil.

Jawaban panjang

Saya baru saja mengalami masalah ini pada Nexus 5 yang menjalankan CyanogenMod 11 (berdasarkan Android 4.4) menggunakan versi Platform Tools dan ADB saat ini (Android Debug Bridge versi 1.0.32 Revisi eac51f2bb6a8-android).

Menggunakan adb logcatuntuk menonton log perangkat, saya perhatikan bahwa setelah memohon adb backup -apk -obb -shared -all -nosystemada beberapa entri log yang mencurigakan:

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

Di mana tampak bahwa perangkat menafsirkan opsi baris perintah sebagai argumen non-opsi, dan menghasilkan kesalahan karena mereka tidak menginstal nama paket. Ini membuat saya curiga protokol adb atau opsi pemanggilan perintah / layanan telah berubah pada perangkat relatif terhadap host, jadi saya mencoba versi adb dan voilà yang lebih lama, itu berhasil.

Saya melakukan sedikit penggalian dan menemukan perubahan untuk Gunakan escape_arg di "adb backup" , yang sekarang menyebabkan semua argumen menjadi dikutip tunggal ketika memohon /system/bin/bu backup. Ini menjelaskan perilaku dan argumen yang dikutip tunggal dalam pesan log. Namun, sepertinya tidak cocok dengan waktu di mana Anda menemukan kesalahan. Itu juga akan menyarankan masalah menjadi jauh lebih luas daripada yang terlihat. Jadi saya ragu menyebut ini penyebabnya, tetapi mungkin ini merupakan titik awal yang baik untuk penyelidikan lebih lanjut.

Kevinoid
sumber
2
Menggunakan versi sebelumnya (1.0.31) memecahkan masalah saya. Pertanyaan ini stackoverflow.com/q/9555337/1741542 dan terutama jawaban ini stackoverflow.com/a/23022718/1741542 membantu saya menemukan versi yang lebih lama, misalnya platform-tools_r20-linux.zip.
Olaf Dietsche
Tampaknya tidak bekerja dengan semua model. Sementara saya membuat cadangan penuh Samsung S3 mini (Android 4.2) tanpa masalah, saya tidak bisa melakukannya dengan tablet, yang ada di Android 4.0. Saya mencoba semuanya dari adb-r10 hingga adb-r23 (tidak termasuk adb-r15) tanpa hasil.
Olaf Dietsche
4
Saya memiliki masalah serupa dengan adb 1.0.32 dan Nexus 5 (Android 6). Saya menyelesaikan ini melalui mengutip argumen cadangan secara eksplisit, yaitu mengeksekusi adb backup '-noapk -noshared -all -nosystem'alih-alih adb backup -noapk -noshared -all -nosystem(di dalam bash shell). Tanpa tanda kutip saya mendapatkan pesan logcat seperti ini: 'flag cadangan tidak dikenal -all: -nosystem: -noapk', 'tidak ada paket cadangan yang disediakan dan tidak ada-shared atau -semua diberikan' dan akhirnya 'Selesai.'.
maxschlepzig
Saya akhirnya mendapat cadangan lengkap dengan Android 4.0 juga. Bodoh saya, itu hanya me-reboot tablet, yang membuat saya pergi.
Olaf Dietsche
5
Terima kasih! Omong-omong, Anda dapat mengunduh adb 1.0.31 untuk semua platform di sini: ftp.mozilla.org/pub/labs/r2d2b2g
eWolf
16

Membangun jawaban kevenoid, itu mungkin tergantung pada versi adb yang berjalan di telepon.

Anda dapat mengetahui versi apa yang dijalankan ponsel secara asli dengan melakukan hal berikut:

Pertama cari tahu versi apa yang Anda jalankan di desktop Anda

adb version

Kemudian buka shell di ponsel Anda

adb shell

Setelah shell terbuka maka Anda bisa lari

adb version

Kemudian keluar dari shell dengan menjalankan

exit

Saya menemukan bahwa ponsel saya menjalankan versi 1.0.31 dan bukan 1.0.32 (ini adalah samsung note 2)

Saya mencoba menggunakan tanda kutip atau karakter melarikan diri seperti Hunter menunjukkan tetapi tidak ada yang bekerja dari baris perintah windows. Namun penurunan versi memang memperbaiki masalah ketidakcocokan antara kedua versi.

Saya dapat menemukan versi yang lebih lama dengan mengikuti instruksi di sini: https://stackoverflow.com/a/23022718/1741542

Tautan unduhan yang saya gunakan adalah:
http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip

Platform lain:

KroniK907
sumber
Apakah ada cara untuk memutakhirkan versi adb di telepon?
Bin Wang
10

Jawaban lain tentang argumen perintah yang dikutip adalah akurat. Saya telah menemukan bahwa jika Anda menghindari ruang di antara argumen, itu berhasil.

Seperti ini: adb backup -apk\ -shared\ -all\ -system

Hunter Perrin
sumber
Ini mungkin bukan solusi untuk masalah OP, tetapi ini adalah solusi yang lebih baik untuk masalah @ Kevinoid daripada menggunakan ADB yang lebih lama, yang tidak berhasil untuk saya.
Hunter Perrin
Ini adalah duplikat dari jawaban Kevinoid tanpa dasar pemikiran. Namun, itu bekerja dengan baik untuk saya, dan saya lebih suka menggunakan \ to '
Neil Mayhew
1
Solusi ini bekerja untuk saya, tidak perlu menurunkan versi adb
freethinker
Saya dapat mengkonfirmasi kecurigaan @HunterPerrin bahwa ini adalah masalah yang berbeda karena saya mencoba ini dulu dan itu tidak menyelesaikan masalah saya tetapi yang kedua saya beralih ke 1.0.31 adb mulai menyalin dengan benar
Sirene
7

Tidak ada solusi yang berfungsi untuk saya di sini, dan saya tidak ingin menurunkan alat SDK saya. Inilah yang saya buat: lewati adb backupkomputer dan langsung ke perangkat via 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

Ini panggilan /system/bin/budan dump file cadangan ke STDOUT (File descriptor # 1). Parameternya sama adb backup <params>-> bu 1 backup <params>. Output diarahkan ke file pada perangkat dan kemudian dapat ditarik seperti file apa pun.

Satu-satunya kelemahan adalah bahwa Anda tidak dapat melakukan pencadangan penuh jika perangkat Anda lebih dari setengah penuh. Ini dapat diselesaikan jika Anda memiliki slot SdCard eksternal. budapat menulis di sana bahkan di Android 4.4.2, karena ini adalah aplikasi sistem. /mnt/extSdCard/backup.abbekerja sama untuk saya /sdcard.

TWiStErRob
sumber
4

desah aku benar-benar minta maaf jika ini yang terjadi, dan kamu tampaknya berhati-hati menilai screenshot dan command line-mu, tapi aku menemukan chagrin gejala yang sama dan berpikir aku akan memposting kalau-kalau penemu masa depan membuatnya di sini. Ternyata adb sangat pilih-pilih tentang tanda hubung tunggal vs. ganda dalam opsinya. Bagi saya, tanda hubung ganda mereproduksi case ini dengan persis: prompt yang sama pada ponsel, file 0 byte yang sama. Tanda hubung tunggal meskipun ada nama argumen panjang bekerja seperti mantra.

Dalam hal ini penting, ponsel saya adalah Samsung Galazy Note 2 AT&T SGH-i317 yang menjalankan Android 5.1 / Cyanogenmod 12.1.

Mat
sumber
2
Saya agak bingung apakah ini harus diposting sebagai jawaban atau komentar. OP menunjukkan bahwa dia menggunakan tanda hubung tunggal, bukan tanda hubung ganda, sehingga jawaban Anda mungkin terlewat. Saya akui jawaban ini informatif (nilai tambah), tetapi sepertinya tidak menjawab masalah OP.
Andrew T.
Ini menyelesaikan masalah saya.
John Freeman
Silakan kirim baris perintah Anda yang sebenarnya.
RoboJ1M
2

Anda perlu menjalankan perintah backup adb pada adb versi 1.0.31.

Untuk windows saya lakukan:

Catatan:

$ adb backup -apk -obb-shared -semua -sistem -f bckp.ab

server adb kedaluwarsa. pembunuhan...

  • daemon mulai berhasil *

Sekarang buka kunci perangkat Anda dan konfirmasikan operasi pencadangan.

... lalu atur semuanya kembali normal.

eee
sumber
1

OKE, inilah cara saya memperbaiki milik saya.

Saya mencoba solusi Hunter Perrin:

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

Tapi itu baru saja kembali segera tanpa kesalahan, tidak ada layar cadangan di ponsel.

Melalui coba-coba ini berhasil bagi saya:

adb backup -all\
RoboJ1M
sumber
1

Saya pikir saya punya solusi untuk mereka yang menggunakan 1.0.32:

masukkan kata sandi saat diminta di layar android

Terlepas dari kenyataan bahwa ia mengatakan akan menggunakan kata sandi default jika Anda tidak memasukkan kata sandi, saya percaya itu tidak dan adb 1.0.32 mungkin tidak memungkinkan pembuatan cadangan yang tidak dienkripsi.

Memasukkan kata sandi berhasil untuk saya, kemudian saya akhirnya menggunakan "Android Backup Extractor" (Warning Sourceforge) dan "Java Cryptography Extension (JCE) Kebijakan Yurisdiksi Kekuatan Tidak Terbatas" untuk mengekstraknya menjadi file tar.

Catskul
sumber
1

Saya mengalami masalah terbalik: 1.0.31 dengan ponsel yang lebih baru (Android 7) juga gagal. 1.0.31 menggunakan: sebagai pemisah saat menyampaikan argumen ke telepon. Seperti yang adb logcat -s BackupManagerServicediperlihatkan, adb yang lebih baru di ponsel juga tidak dapat menangani gaya lama: 02-19 01:59:44.330 1100 9830 W BackupManagerService: Unknown package com.gameloft.android.ANMP.GloftPOHM:-apk, skipping Untungnya, adb yang lebih baru menerima spasi sebagai pemisah juga, jadi melampirkan argumen dalam karya tanda kutip ganda berfungsi, misalnya: adb.exe backup "com.gameloft.android.ANMP.GloftPOHM -apk" -f game-backup.ab

memotong rumput
sumber