ADB ile Android Ayarları ve Uygulamalarını yedekleme ve geri yükleme


30

Tüm Android Ayarlarının ve uygulamalarının ADB üzerinden yedeklenip geri yüklenmesinin mümkün olup olmadığını sormak istiyorum.

Denedim:

adb backup -all
adb: unable to connect for backup

Diğer tüm komutlar çalışırken, çalışmıyor.

Bu bmgr kullanmak mümkün ?


win7-64 üzerinde adb 1.0.29 kullanıyorum ve adb: unable to open file ./backup.abçalıştırırken hata alıyorum adb backup -all. yok adb devicessenin android bulmak?
k3b,

evet cihaz kimliğini görebilirim.

Komut satırına çoklu paket adlarını gönderirken de benzer bir sorunla karşılaştım. Sorun şu ki (yedek) yedeklenecek paket sayısı çok uzun. Birden fazla komut çağrısına
bölmem gerekiyordu

Yanıtlar:


9

Hata ayıklamanın etkin ve cihazın bağlı olduğundan emin olun. Ayrıca, gerçekte aygıtın kendisindeki "verilerimi yedekle" düğmesini seçmeyi de unutmayın (aygıtın onaylanması gerekir). Cihazınızda böyle bir ekran görmüyorsanız, muhtemelen ICS (<4.0) öncesi bir telefon kullanıyorsunuzdur, bu ne yazık ki bu özelliğe sahip olmayacaktır.

Ayrıca, bmgrbunun için bir çözüm değildir - Cihaza bombalamadan, uygulamadaki yedekleme aracısında "yedekleme" ve "geri yükleme" yöntemlerini manuel olarak ateşleyerek yedekleme API'sini kullanarak kendi yedeklemelerini işleyen uygulamaları test etmek için bir araçtır ve verilerin geliştirme makinesine / makineden kopyalanması.


Yup - Benim için sorun telefonumda Android 4.0 eski sürümü, öncesi 4.0 oldu. Teşekkürler!
nealmcb

Bu aslında ayarları / verileri içeriyor mu?
Hiç kimse

7

İşte bazı şeyleri yedekleme komutum

./adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir sav\/\1; .\/adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/.\/adb pull \/\1 sav\/\1/' | /bin/bash
  1. tüm dosyaları listele
  2. bağlantıları yoksay
  3. için
    • files: bir adb pull komutu verir.
    • dizinler: dir (make sth boş alırsak) ve adb pull komutu çıkar
  4. her şeyi bash içinde yürüt

İzin verilmeyen bazı dosyalar var reddedildi - ancak bu yedeği aygıta bağlamak için yapıldığından daha fazla izin alamıyorum :(


1
Bu gerçekten de eski Android'lerde bile (bu durumda, Gingerbread 2.3.3) tüm dosyaları (eksi "reddedildi" bitleri) yedekliyor gibi görünmektedir. Bu değişkeni kullanıyorum ( bazı hata mesajlarından kaçınmak ve önüne kaldırılmak için -pparam eklendi ):mkdir././adbtime adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir -p sav\/\1; adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/adb pull \/\1 sav\/\1/' | /bin/bash
Stéphane Gourichon

3
Herhangi bir fantezi regex gerekmeden, tüm dosyaları özyinelemeli bir yedekleme yapmak için çok daha basit bir yol "adb pull /."
JC Hulce

5

Seni doğru anlarsam, bu aradığın şey olabilir. Özetlemek:

1)adb devices Cihazınızın takılı olduğundan emin olmak için çalıştırın .

2)adb pull /data/app ./ Tüm uygulama APK'lerini kapmak ve geçerli klasöre koymak için çalıştırın .
a) Veya adb pull /system/sd/app ./SD kartta uygulama almak için Çalıştır'ı seçin .

3) Ayarlar çeşitli yerlerde bulunur, bu yüzden adb pullonları bulmak için aynı komutu nerede kullanıp kullanın .

Ve sonra bağlantı Mac veya Windows'a göre nasıl geri yükleyeceğinizi açıklar.

Alternatif olarak, bmgrbahsettiğiniz komut aynı zamanda birkaç basit komutla da çalışacaktır ( adb shell bmgr backup <package>yedekleme ve adb shell bmgr restore <package>geri yükleme). Daha ne arıyorsun?


1
Alexander Lucas, aşağıdaki cevabını not ettiği gibi, bmgrkomut, geliştiricilerin uygulama yedekleme / geri yüklemesini test etmek için bir araçtır. Aslında cihazdan herhangi bir veri kopyalamaz, bu nedenle kullanışlı olması olası değildir.
PT

Gingerbread cihazıyla adb 1.0.30'da çalışmıyor:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon 6:13

Kişisel adb pullirade gizli uygulama verileri için olmayan köklü cihazlarda yaramayacak. Ve bmgrsadece googles bulut yedekleme kontrol etmek için
Murmel

2

Sorun muhtemelen bağlı birden fazla cihaz / emülatörden kaynaklanmaktadır.

adb devicesBirden fazla cihaz gösterilip gösterilmediğini kontrol edin, sonra bağlanamayabilir specialy to emulators.

çalıştırın adb usbdiğer aygıtları yeniden başlatacak, sonra USB kablosu bağlantısını kesecek / yeniden bağlayacak, şimdi çalıştırın

adb devices

sadece bir cihaz göstermelidir.

Şimdi yap

adb backup -all

ve gitmek için iyi olmalısın :)


yerel olarak komutu Android için bir terminal emülatörü aracılığıyla yerel olarak kullanırsam ne yapmam gerekir?
user2284570

2

SDK güncellemesini çalıştırdığınızdan ve özellikle Google USB Sürücüleri kutucuğunu işaretlediğinizden ve SDK'yı güncellediğinizden emin olun.

Aygıtınızda USB hata ayıklamasını etkinleştirdikten ve bilgisayarınıza taktıktan sonra, sürücülerin yüklenmesi hakkında bir uyarı istemeniz gerekir. Başarılı bir cihaz yöneticisi açıp telefonunuzu bulsanız bile, sürücüleri sağ tıklayıp güncelleyin ve içindeki Google USB sürücü klasörüne SDK > Extras > Google USBgelin ve sürücüleri güncellemesine izin verin.

Ardından, cihazınızdan tam yedeklemeler yapabilmeniz gerekir.


Bu, sahip olduğum sırada benim için sorunu çözdü. Sürücüler sorun değildi, ancak ADB sürümünün kendisi de eskidi.
AJ Henderson,

1

Yedeklemem gereken bir GS4'üm var ve ne yazık ki bu hatayla karşılaştım. biraz kafa çizilmesinden sonra (ve küfretmeden sonra) sizin için çalışacağını umduğum bir düzeltme buldum. Bunu sadece abdyardım belgelerini çalıştırarak ve kaydırarak bulabildim . Bunun -d"komutu yalnızca bağlı USB cihazına yönlendiren" bir parametre olduğunu buldum . Bu yüzden fişe takıp çırptıktan sonra benim için çalışmasını sağladım. Kullandığım komut şuydu:

adb -d backup -apk -shared -all -f C:\Users\NAME\backup.ab

Umarım bu aynı sorunu yaşayan biri için işe yarar.


0

Aynı sorunu yaşadım ve aynı zamanda ICS öncesi. /Üzerinde çalışmak için ne yaptım ls ve awk (bağlantıları atlamak için grep ile) her gerçek dizini bilgisayarımdaki bir dizine çeken bir toplu iş dosyası oluşturmak için kullanıldı.

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.