ADB yedeklemesi 0 bayt dosya oluşturur; Asla ayarlamadıysam bile mevcut yedekleme şifresini sorar; Masaüstü yedekleme şifresi için “Şifre ayarlanamadı”


49

Sorun:

ADB yedeklemesini her çalıştırdığımda, ana ekranın altına yakın bir mesaj alıyorum Backup starting..., ardından Backup finished birkaç saniye sonra 17 GB cihaz hafızası kullandığım gerçeğine rağmen oluşan bir mesaj ve ardından oluşan yedek dosya oluşturuldu. 0 baytlık bir boyuta sahip. Hiçbir hata iletileri, geri bildirim olursa olsun belirten bu yanlış bir şey olduğunun, dursun neyi yanlış. Çalışıyor gibi görünüyor, ama çok hızlı bir şekilde ve yedekleme dosyası boştur.

Süreç:

  1. Aygıtın adb deviceskomutu kullanarak ADB tarafından tanındığını onaylarım ve aşağıdaki çıktıyı alırım:

    List of devices attached
    8e1f368a        device
    
  2. ADB yedekleme komutunu verdim (takip edilecek detaylar).

  3. Komut isteminde aşağıdaki mesajı alıyorum:

    Now unlock your device and confirm the backup operation.
    

    ... ve telefonda aşağıdaki bilgi istemi:

    görüntü tanımını buraya girin

    Burada ne yaptığım farketmez.

  4. Back up my dataDüğmeye dokunun (sağ alt köşe).

  5. Telefon ana ekrana geri döner ve bana Backup starting...mesajı, ardından Backup finishedbirkaç saniye sonra mesajı gösterir . Varsayılan yedekleme.ab veya -f anahtarıyla belirtilmiş olduğum adında bir 0 bayt dosya oluşturulur .

ADB yedekleme komutu (2. adımda kullanılır):

Farklı seçenekler arasından çok farklı seçenekler denedim

adb backup -all

gibi şeylere

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

Ayrıca bunu ve bunu-nosystem okuduktan sonra anahtarı eklemeyi denedim, bu , köklü olmayan bir aygıta sistem yedeği eklemeyi denemenin 0 baytlık bir dosyaya yol açabileceğini ve bu anahtarın kullanılması gerektiğini belirtir. Fark yaratmıyor, işlem birkaç saniye içinde tamamlanıyor ve hala 0 baytlık bir dosya alıyorum.

"Tam yedekleme" şifre istemi (3. adım):

Daha önce hiç yedekleme şifresi belirlemediğimden eminim. Bu şifreyi ayarlama veya bu ayarlara daha önce herhangi bir şekilde erişme fırsatım olmamıştı. Ancak, aşağıdakilerin hepsini denedim:

  • Her iki şifreyi boş bırakmak
  • "Geçerli yedekleme şifresini" boş bırakmak ve ikinci kutuya yeni bir şifre girmek
  • Geçerli ekran kilidi PIN'ini ve geçmişte şimdiye kadar "geçerli yedekleme şifresi" olarak kullandığım tüm PIN'leri girme.
  • Her şifreyi girerek bu cihazda herhangi bir şey için kullanabileceğimi düşünebilirim

Her durumda, davranış tam olarak 5. adımda açıklananlarla aynıdır. Hata veya herhangi bir şeyin yanlış olduğu veya şifrelerimin geçersiz olduğuna dair herhangi bir belirti alamıyorum ve gerçekten geçerli bir parola mı beklediğine veya bunun gerçekten geçerli bir şifre mi beklediğine dair hiçbir ipucu yok. alan boş bırakılmalıdır. (İçinde ekran görüntüsü Bu yanıt ben baktım ve birkaç diğer destek forumları hiçbir geçerli şifre varsa "Mevcut yedekleme şifresi" kutu görünmez olacağını ima eder gibi görünmektedir, ama bu sadece bir çıkarsama var; hiçbir şey olmadığını açıkça yapar Geçerli bir şifre aslında gereklidir.)

Sizden istediği parolanın, Geliştirici seçeneklerinde ayarlanan "Masaüstü yedekleme parolası" olabileceğinden şüpheleniyorum:

görüntü tanımını buraya girin

Bu şifreyi daha önce hiç ayarlamadım. Bir tane ayarlamaya çalışırsam bir mesaj alıyorum.Failed to set backup password.

Bu hata hakkında bilgi ararken, bu sorunu yaşayan birinin bunun ADB yedeğini kullanmasını engellediğini söylediği en az bir başka durumla karşılaştım, ancak ADB'yi kullanmaya çalışırken ne olacağı konusunda net değildi. yedekleme.

Bu mesajı alan ve daha önce şifreyi hiç ayarlamayan çoğu kişi, çözümün mevcut şifreyi boş bırakmak olduğunu söylüyor, ancak ilk başta bunu denedim ve işe yaramadı. Başka bir kişinin bu soruna rastlayan ve daha önce şifresini belirlemediğinden emin olduğu bir soru buldum . Maalesef bir çözümü varmış gibi görünmüyor, hatta bir açıklaması bile var.

ADB'nin "Masaüstü yedekleme şifresi" aramasına bakılmaksızın veya ADB şifreleme şifresi ayrı bir şey olup olmadığına bakılmaksızın, ADB'nin neden yeni bir yedekleme başlatmak için önceki bir şifreyi girmenizi istediğini belirtiyor. Ben, geri üzerine yazmak vermeye çalışan veya herhangi bir şekilde erişim daha önce verileri şifreli, bu nedenle bir yedekleme için bir şifreleme parolası bile değilim vardı önceden ayarlanmış kimse onu engellemek için iyi bir fikir olduğunu düşünüyorum neden ben hayal edemiyorum Geçmişte yedeklemeleri şifrelemek için hangi şifreyi kullandığınızı hatırlamıyorsanız cihazınızı yedekleyin.

Ek bilgi:

Model: Samsung Galaxy S4 SCH-I545
Çekirdek sürümü: 3.4.0
İşletim sistemi sürümü: 4.4.2
Android SDK Araçları sürümü: 1.16
USB hata ayıklama etkindir.

ADB yedeklemesini kullanmamın nedeni, telefonumun tam bir yedeğini almaktan önce, güvenli bir tarafta olmanızdan kaynaklanıyor * böylece Titanyum yedeklemesi gibi nandroid yedekleme araçlarını kullanabilirim. Bu yüzden, telefonumu köklendirme ile ilgili herhangi bir öneri bir çözüm değil, bir Catch-22 olacaktır. Söylemeye gerek yok, fabrika ayarlarına sıfırlama da bir çözüm değildir, çünkü yedekleme işleminin tüm amacını ortadan kaldıracaktır.

Telefon , şirketimin Exchange sunucuları ile eşitlenecek şekilde ayarlanmış ve sunucu tarafından uygulanan bazı politikalar var. Şirket hesabıyla senkronizasyonu ilk kurduğumda cihazın şifreli olduğunu düşünmüştüm, fakat görünüşe göre şifreli değil. Aslında, bu olay zincirini harekete geçiren şey buydu: Bana şirket sunucularına bağlanmaya devam etmek için cihazı şifrelemem gerektiğini söyleyen bir mesaj alıyorum. Şifrelemeden önce nandroid yedeklemesi yapmak istiyorum, köklendirme gerektirir ve köklendirme işleminden önce ADB yedeğini kullanmak istiyorum.


* Evet, Towelroot'un güvende olduğu iddiasında olduğumun farkındayım, ancak şansı denemeyi tercih etmem ve gelecekte ilgili sorunların ortaya çıkması durumunda bu sorunu çözmek veya en azından anlamak istiyorum.


Tabletlerimden birinde (her iki durumda da köklenmiş olsun olmasın) ADB ile ilgili bazı sorunlar vardı (tam tersi şekilde: adb backupiyi çalıştı ancak adb restoreher zaman başarısız oldu). Bir izin problemi olduğu ortaya çıktı (üretici ROM ile uğraştı), bu yüzden adb restorecihaza transfer edildikten sonra yedekleme dosyasını okuyamadı. Bulmak biraz zor oldu ve benzer bir şeyin gerçekten de böyle olup olmadığından emin değilim; ama kontrol etmeye değer olabilir.
Izzy

2
Buraya aynı 0baytlık sorunla karşılaşanlar için: Bu sorunu yaşadım çünkü bir keresinde Ayarlar altında masaüstü şifresini ayarlayıp unuttum. Cihaz köklü olduğu için bu cevabı (benimki) takip ettim ve her şey yolunda gitti.
Firelord

Ayrıca şunlara da bakabilirsiniz: code.google.com/p/android/issues/detail?id=47009 - Telefonunuzu şifrelediyseniz, tüm istemlerde şifreleme şifrenizi "geçerli şifre" olarak kullanmanız gerekebilir: "Tam yedekleme" ekranında veya "Masaüstü yedekleme şifresi" birinde.
Marco Leogrande

@AdiInbar hiç bunu çözdün mü?
codecowboy

Bunu bulmam biraz zaman aldı. Doğru anahtar kelimeleri kullanmıyor muydum bilmiyorum ama bu tam olarak ihtiyacım olan şeydi!
Thomas

Yanıtlar:


31

Kısa cevap

Adb'nin daha eski bir sürümünü kullanmayı deneyin. 1.0.32 benim için işe yaramadı, ancak 1.0.31 yaptı.

Uzun cevap

Bu sorunla, Platform Araçları'nın ve ADB'nin (Android Debug Bridge sürüm 1.0.32 Revizyon eac51f2bb6a8-android) mevcut sürümünü kullanarak CyanogenMod 11 (Android 4.4 tabanlı) çalıştıran bir Nexus 5'te karşılaştım.

Kullanılması adb logcatcihazı günlükleri izlemek için, ben yürütmesini sonra fark ettim adb backup -apk -obb -shared -all -nosystembazı şüpheli günlük girişleri vardı:

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

Aygıtın komut satırı seçeneklerini seçenek olmayan argümanlar olarak yorumladığı ve paket adları yüklenmediğinden bir hata ürettiği anlaşılıyor. Bu beni adb protokolünden veya cihazda ana bilgisayarla ilgili komut / servis başlatma seçeneklerinin değiştiğinden şüphelendirdi, bu yüzden adb ve voilà'nın eski bir versiyonunu denedim, çalıştı.

Biraz kazı yaptım ve "adb backup" da escape_arg Kullan işlevinde bir değişiklikle karşılaştım /system/bin/bu backup. Bu, günlük mesajındaki davranışı ve tek alıntı argümanları açıklar. Ancak, hatayla karşılaştığınız zamanla eşleşmiyor gibi görünüyor. Aynı zamanda konunun göründüğünden çok daha yaygın olmasını önerecektir. Bu yüzden buna sebep olarak tereddüt ediyorum, ancak daha fazla araştırma için iyi bir başlangıç ​​noktası olabilir.


2
Daha önceki bir sürümü (1.0.31) kullanmak sorunumu çözdü. Bu soru stackoverflow.com/q/9555337/1741542 ve özellikle bu cevap stackoverflow.com/a/23022718/1741542 daha eski bir sürüm bulmama yardımcı oldu, örneğin platform-tools_r20-linux.zip.
Olaf Dietsche 10:15

Yine de tüm modellerde işe yaramaz gibi görünüyor. Sorunsuz bir Samsung S3 mini (Android 4.2) yedekleme yaparken, Android 4.0'da olan bir tablet ile bunu yapamadım. Adb-r10’dan adb-r23’e kadar (adb-r15 hariç) başarılı olamadım.
Olaf Dietsche 12:15

4
Adb 1.0.32 ve Nexus 5 (Android 6) ile benzer bir sorunum vardı. Bunu açıkça bağımsız değişkenlerden alıntı yaparak çözdüm, yani adb backup '-noapk -noshared -all -nosystem'yerine adb backup -noapk -noshared -all -nosystem(bir bash kabuğunun içinde). Alıntılar olmadan logcat mesajları alıyorum: 'bilinmeyen yedekleme bayrağı -all: -nosystem: -noapk', 'yedekleme paketleri sağlanmadı ve ne paylaşıldı ne de-tümü verildi' ve sonunda 'Tamamlandı'.
maxschlepzig

Sonunda Android 4.0 ile de tam bir yedekleme yaptım. Aptallık, sadece tabletin yeniden başlatılmasıydı, bu da beni harekete geçirdi.
Olaf Dietsche

5
Teşekkürler! Bu arada, burada tüm platformlar için adb 1.0.31'i indirebilirsiniz: ftp.mozilla.org/pub/labs/r2d2b2g
eWolf

16

Kevenoid'in cevabı üzerine inşa, telefonda adb'nin hangi versiyonunun çalıştığına bağlı olabilir.

Aşağıdakileri yaparak telefonun hangi sürümde çalıştığını öğrenebilirsiniz:

İlk önce masaüstünüzde hangi sürümü kullandığınızı öğrenin

adb version

Ardından telefonunuzdaki kabuğu açın.

adb shell

Kabuk açıldıktan sonra koşabilirsiniz

adb version

Ardından çalıştırarak kabuğundan çıkın

exit

Telefonumun sürüm 1.0.31’de çalıştığını ve 1.0.32’de çalıştığını buldum (bir samsung not 2’dir)

Hunter'ın gösterdiği gibi alıntılar veya kaçış karakterleri kullanmayı denedim, ancak hiçbiri Windows komut satırından çalıştı. Ancak düşüş, iki sürüm arasındaki uyumsuzluk sorununu çözdü.

Buradaki talimatları izleyerek eski sürümü bulabildim: https://stackoverflow.com/a/23022718/1741542

Kullandığım indirme bağlantısı şuydu:
http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip

Diğer platformlar:


Telefondaki adb sürümünü yükseltmenin bir yolu var mı?
Bin Wang,

10

Alıntılanan komut argümanları hakkındaki diğer cevaplar doğrudur. Eğer argümanlar arasındaki boşluktan kaçarsan, işe yaradığını buldum.

Bunun gibi, böyle: adb backup -apk\ -shared\ -all\ -system


Bu OP'nin probleminin çözümü olmayabilir, ancak @ Kevinoid'in problemine benim için işe yaramayan eski bir ADB kullanmaktan daha iyi bir çözüm.
Hunter Perrin

Bu, Kevinoid'in cevabının gerekçesi olmadan yanıtının bir kopyası. Ancak, benim için iyi çalıştı ve
Neil Mayhew

1
Bu çözüm benim için çalıştı, adb'yi düşürmeye gerek yok
freethinker

Bu farklı bir sorun olduğunu bu ilk çalıştı ve benim sorunu çözmek vermedi ama 1.0.31 adb gitti ikinci doğru kopyalamak başladı çünkü @HunterPerrin 'ın şüpheyi teyit edebilir
Sirenler

7

Geçici çözümlerin hiçbiri burada benim için çalıştı ve SDK araçlarımı düşürmek istemiyorum. İşte geldiğim şey: adb backupbilgisayarı atla ve doğrudan cihaza geç 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

Bu /system/bin/bu, yedek dosyayı çağırır ve STDOUT'a gönderir (Dosya tanımlayıcı # 1). Parametreler aynı adb backup <params>-> bu 1 backup <params>. Çıkış, cihazdaki bir dosyaya yönlendirilir ve daha sonra herhangi bir dosya gibi çekilebilir.

Tek dezavantajı, cihazınız yarıdan fazla doluysa tam yedekleme yapamamanızdır. Harici bir SdCard yuvanız varsa, bu sorun çözülebilir. buOrada bile Android 4.4.2 yazabilirsiniz, çünkü bir sistem uygulamasıdır. /mnt/extSdCard/backup.abbenim için aynı çalıştı /sdcard.


4

iç çekişme Durum buysa, gerçekten üzgünüm ve ekran görüntüleriniz ve komut satırlarınızla titizlikle dikkat ediyor gibi görünüyorsunuz, ancak aynı zamanda belirtilerimi belirttim ve gelecekteki kaşiflerin burada yapması durumunda göndereceğimi düşündüm. Adb'nin seçeneklerinde tekli ve çiftli çizgi hakkında çok seçici olduğu ortaya çıktı . Benim için, çift çizgiler bu durumu tam olarak üretti: telefonda aynı bilgi istemi, aynı 0 bayt dosya. Tekil çizgi gibi uzun argüman adları olsa bile tek çizgiler .

Sorun olması durumunda, telefonum Android 5.1 / Cyanogenmod 12.1 kullanan bir Samsung Galazy Note 2 AT&T SGH-i317'dir.


2
Bunun bir cevap veya yorum olarak yayınlanması gerekip gerekmediğini karıştırıyorum. OP çift çizgi değil tek çizgi kullandığını gösteriyor, bu yüzden cevabınız muhtemelen işareti kaçırdı. Bu cevabı bilgilendirici (katma değer) kabul ediyorum, ancak OP'nin sorununa cevap vermiyor gibi görünüyor.
Andrew T.

Bu benim sorunumu çözdü.
John Freeman

Lütfen gerçek komut satırınızı gönderin.
RoboJ1M

2

Adb yedekleme komutunu adb sürüm 1.0.31'de uygulamanız gerekir.

Yaptığım pencereler için:

Log:

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

adb sunucusu güncel değil. öldürme ...

  • arka plan başarıyla başlatıldı *

Şimdi cihazınızın kilidini açın ve yedekleme işlemini onaylayın.

... sonra her şeyi normale döndür.


1

Tamam, benimki böyle düzeltti.

Hunter Perrin'in çözümünü denedim:

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

Ama sadece derhal bir hata ile döndü, telefonda hiçbir yedekleme ekranı yok.

Deneme ve yanılma ile bu benim için çalıştı:

adb backup -all\

1

1.0.32 kullananlar için bir çözümüm olduğunu düşünüyorum:

android ekranda istendiğinde bir şifre girin

Hiçbirini girmezseniz, varsayılan parolayı kullanacağını söylese de, bunu yapmadığına inanıyorum ve 1.0.32 adb belki de şifrelenmemiş yedeklerin oluşturulmasına izin vermiyor.

Bir şifre girmek benim için işe yaradı, daha sonra bir tar dosyasına ayıklamak için "Android Backup Extractor" (Uyarı Sourceforge) ve "Java Cryptography Extension (JCE) Sınırsız Güç Yargı Politikası" nı kullandım.


1

Ters problemle karşılaştım: 1.0.31 daha yeni bir telefonla (Android 7) de başarısız oluyor. 1.0.31 kullanır: argümanları telefona iletirken ayırıcı olarak. Gösterildiği gibi adb logcat -s BackupManagerService, telefondaki yeni adb, aynı zamanda eski stili de kaldıramaz: 02-19 01:59:44.330 1100 9830 W BackupManagerService: Unknown package com.gameloft.android.ANMP.GloftPOHM:-apk, skipping Neyse ki, yeni adb, boşlukları da ayırıcı olarak kabul eder; adb.exe backup "com.gameloft.android.ANMP.GloftPOHM -apk" -f game-backup.ab

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.