สำรองและกู้คืนการตั้งค่าและแอปพลิเคชัน Android ผ่าน ADB


30

ฉันต้องการถามว่าเป็นไปได้หรือไม่ที่จะสำรองและเรียกคืนการตั้งค่าและแอปพลิเคชัน Android ทั้งหมดผ่าน ADB

ฉันเหนื่อย:

adb backup -all
adb: unable to connect for backup

มันไม่ทำงานในขณะที่คำสั่งอื่น ๆ ทั้งหมดทำงาน

เป็นไปได้ไหมที่จะใช้bmgrนี้?


ฉันใช้ adb 1.0.29 ใน win7-64 และได้รับข้อผิดพลาดเมื่อมีการดำเนินadb: unable to open file ./backup.ab adb backup -allไม่adb devicesพบหุ่นยนต์ของคุณหรือไม่
k3b

ใช่ฉันเห็นรหัสอุปกรณ์

ฉันมีปัญหาที่คล้ายกันเมื่อส่งชื่อแพคเกจหลายคำสั่งในบรรทัดคำสั่ง ปัญหาคือ (คือ) จำนวนแพ็กเกจที่จะสำรองยาวเกินไป ฉันต้องการแยกมันในการเรียกใช้คำสั่งหลายครั้ง
Romuald Brunet

คำตอบ:


9

ตรวจสอบให้แน่ใจว่าเปิดใช้งานการดีบักและอุปกรณ์เชื่อมต่อแล้ว นอกจากนี้อย่าลืมเลือกปุ่ม "สำรองข้อมูลของฉัน" บนอุปกรณ์นั้น (อุปกรณ์ต้องได้รับการยืนยัน) หากคุณไม่เห็นหน้าจอดังกล่าวบนอุปกรณ์ของคุณแสดงว่าคุณอาจใช้โทรศัพท์ pre-ICS (<4.0) ซึ่งน่าเสียดายที่ไม่มีคุณสมบัตินี้

นอกจากนี้ยังbmgrไม่ใช่วิธีแก้ปัญหาสำหรับสิ่งนี้ - เป็นเครื่องมือสำหรับทดสอบแอปที่จัดการการสำรองข้อมูลของตัวเองโดยใช้API การสำรองข้อมูลด้วยการใช้วิธีการ "สำรองข้อมูล" และ "กู้คืน" ด้วยตนเองในตัวแทนสำรองข้อมูลในแอปพลิเคชัน การคัดลอกข้อมูลไปยัง / จากเครื่องพัฒนา


Yup - สำหรับฉันปัญหาคือ Android เวอร์ชันเก่าบนโทรศัพท์ของฉันก่อน 4.0 ขอบคุณ!
nealmcb

สิ่งนี้รวมถึงการตั้งค่า / ข้อมูลจริงหรือไม่?
ไม่มีใคร

7

นี่คือคำสั่งของฉันสำหรับการสำรองข้อมูล

./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. รายการไฟล์ทั้งหมด
  2. ละเว้นการเชื่อมโยง
  3. สำหรับ
    • files: เอาต์พุตคำสั่ง adb pull
    • ไดเรกทอรี: ทำให้ dir (ในกรณีที่เราดึง sth ว่างเปล่า) และส่งออกคำสั่ง adb pull
  4. ดำเนินการทุกอย่างด้วยการทุบตี

มีไฟล์บางส่วนที่ฉันได้รับอนุญาตปฏิเสธ - แต่เนื่องจากการสำรองข้อมูลนี้ทำขึ้นเพื่อรูทอุปกรณ์ฉันจึงไม่สามารถรับสิทธิ์เพิ่มเติม :(


1
นี่ดูเหมือนจะเป็นการสำรองไฟล์ทั้งหมด (ลบบิต "สิทธิ์ถูกปฏิเสธ") แม้กระทั่งบน Android รุ่นเก่า (ในกรณีนี้คือ Gingerbread 2.3.3) ฉันใช้ตัวแปรนี้ (เพิ่ม-pพารามิเตอร์เพื่อmkdirหลีกเลี่ยงข้อความแสดงข้อผิดพลาดและลบ./ต่อหน้า./adb):time 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
วิธีที่ง่ายกว่ามากในการสำรองข้อมูลซ้ำของไฟล์ทั้งหมดโดยไม่จำเป็นต้องมี regex อันใดคือ "adb pull /."
JC Hulce

5

ถ้าฉันเข้าใจคุณถูกต้องลิงค์นี้อาจเป็นสิ่งที่คุณกำลังมองหา เพื่อสรุป:

1)เรียกใช้adb devicesเพื่อให้แน่ใจว่าอุปกรณ์ของคุณเชื่อมต่อ

2)เรียกใช้adb pull /data/app ./เพื่อคว้า APK ทั้งหมดของแอปและวางไว้ในโฟลเดอร์ปัจจุบัน
a) หรือเรียกใช้adb pull /system/sd/app ./เพื่อรับแอพในการ์ด SD

3)การตั้งค่าตั้งอยู่ในสถานที่ต่าง ๆ ดังนั้นหาที่ไหนแล้วใช้adb pullคำสั่งเดียวกันเพื่อคว้าพวกเขา

จากนั้นลิงก์จะแสดงรายละเอียดวิธีการกู้คืนโดยใช้ Mac หรือ Windows

อีกวิธีหนึ่งดูเหมือนว่าbmgrคำสั่งที่คุณกล่าวถึงจะทำงานกับคำสั่งง่ายๆสองสามคำสั่ง ( adb shell bmgr backup <package>เพื่อสำรองและadb shell bmgr restore <package>เรียกคืน) คุณกำลังมองหาอะไรอีก


1
ดังที่ Alexander Lucas บันทึกไว้ในคำตอบของเขาด้านล่างbmgrคำสั่งเป็นเครื่องมือสำหรับนักพัฒนาในการทดสอบการสำรองข้อมูล / เรียกคืนแอป มันไม่ได้คัดลอกข้อมูลใด ๆ ออกจากอุปกรณ์ดังนั้นจึงไม่น่าจะมีประโยชน์
PT

ไม่ทำงานบน adb 1.0.30 กับอุปกรณ์ Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

คุณadb pullจะไม่ทำงานบนอุปกรณ์ที่ไม่ได้รูทสำหรับข้อมูลแอพส่วนตัว และbmgrมีไว้สำหรับควบคุมการสำรองข้อมูลบนคลาวด์ของ
Google เท่านั้น

2

ปัญหาอาจเกิดจากอุปกรณ์ / ตัวจำลองเชื่อมต่อมากกว่าหนึ่งตัว

ตรวจสอบ adb devicesspecialy to emulatorsถ้ามันแสดงให้เห็นอุปกรณ์มากกว่าหนึ่งแล้วมันอาจจะไม่สามารถที่จะเชื่อมต่อ

เรียกใช้adb usbจะรีสตาร์ทอุปกรณ์อื่น ๆ จากนั้นปลด / เชื่อมต่อสายเคเบิล USB ใหม่ตอนนี้รัน

adb devices

ควรแสดงอุปกรณ์เดียวเท่านั้น

ตอนนี้ทำ

adb backup -all

และคุณควรจะไปดี :)


ฉันต้องทำอย่างไรถ้าฉันใช้คำสั่งในเครื่องผ่านทางโปรแกรมจำลองเทอร์มินัลสำหรับ Android
2284570

2

ตรวจสอบให้แน่ใจว่าเรียกใช้การอัปเดต SDK และทำเครื่องหมายที่ช่องสำหรับไดรเวอร์ USB ของ Google และอัปเดต SDK

หลังจากเปิดใช้งานการแก้ไขข้อบกพร่อง USB บนอุปกรณ์ของคุณและเสียบเข้ากับพีซีของคุณคุณควรได้รับพรอมต์เกี่ยวกับการติดตั้งไดรเวอร์ แม้ว่ามันจะประสบความสำเร็จในการเปิดตัวจัดการอุปกรณ์และค้นหาโทรศัพท์ของคุณคลิกขวาและอัปเดตไดรเวอร์และชี้ไปที่โฟลเดอร์ไดรเวอร์ USB ของ Google ในSDK > Extras > Google USBและปล่อยให้มันอัปเดตไดรเวอร์

จากนั้นคุณควรจะสามารถดึงข้อมูลสำรองทั้งหมดออกจากอุปกรณ์ของคุณ


การแก้ไขปัญหานี้สำหรับฉันเมื่อฉันมี ไดรเวอร์ไม่ได้เป็นปัญหา แต่รุ่น ADB นั้นล้าสมัยเกินไป
AJ Henderson

1

ฉันมี GS4 ที่ฉันต้องการสำรองและพบข้อผิดพลาดนี้ หลังจากเกาเล็กน้อย (และสาบาน) ฉันพบวิธีแก้ไขที่ฉันหวังว่าจะได้ผลสำหรับคุณ ฉันสามารถค้นหาสิ่งนี้ได้โดยเพียงแค่เรียกใช้abdและเลื่อนดูเอกสารความช่วยเหลือ ฉันพบว่า-dเป็นพารามิเตอร์ที่ "นำคำสั่งไปยังอุปกรณ์ USB ที่เชื่อมต่อเท่านั้น" ดังนั้นหลังจากที่เสียบและสับฉันได้มันไปใช้งานได้สำหรับฉัน คำสั่งที่ฉันใช้คือ:

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

หวังว่าจะได้ผลกับคนที่มีปัญหาแบบเดียวกันกับฉัน


0

ฉันมีปัญหาเดียวกันและฉันยัง pre-ICS สิ่งที่ฉันทำเพื่อแก้ไขมันใช้ ls of /และ awk (ด้วย grep เพื่อข้ามลิงค์) เพื่อสร้างแบตช์ไฟล์ที่ดึงแต่ละไดเรกทอรีจริงไปยังไดเรกทอรีบนพีซีของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.