Sao lưu và khôi phục Cài đặt và Ứng dụng Android thông qua ADB


30

Tôi muốn hỏi liệu có thể sao lưu và khôi phục tất cả các Cài đặt và ứng dụng Android thông qua ADB không.

Tôi đã thử:

adb backup -all
adb: unable to connect for backup

Nó không hoạt động, trong khi tất cả các lệnh khác đang hoạt động.

Có thể sử dụng bmgr này ?


tôi đang sử dụng adb 1.0,29 trên win7-64 và gặp lỗi adb: unable to open file ./backup.abkhi thực thi adb backup -all. không adb devicestìm thấy Android của bạn?
k3b

vâng tôi có thể thấy id thiết bị.

Tôi đã gặp một vấn đề tương tự khi gửi tên gói nhiều lần trên dòng lệnh. Vấn đề là (là) số lượng các gói để sao lưu quá dài. Tôi cần phải chia nó thành nhiều lệnh gọi
Romuald Brunet

Câu trả lời:


9

Đảm bảo gỡ lỗi được bật và thiết bị được kết nối. Ngoài ra, hãy nhớ thực sự chọn nút "sao lưu dữ liệu của tôi" trên chính thiết bị (thiết bị yêu cầu xác nhận). Nếu bạn không thấy một màn hình như vậy trên thiết bị của mình, bạn hoàn toàn có thể đang chạy điện thoại tiền ICS (<4.0), rất tiếc sẽ không có tính năng này.

Ngoài ra, bmgrkhông phải là một giải pháp cho việc này - Đây là một công cụ để kiểm tra các ứng dụng xử lý các bản sao lưu của riêng chúng bằng API sao lưu bằng cách bắn thủ công các phương thức "sao lưu" và "khôi phục" trên tác nhân sao lưu trong ứng dụng, không bắn vào thiết bị và sao chép dữ liệu đến / từ máy phát triển.


Yup - đối với tôi, vấn đề là phiên bản Android cũ trên điện thoại của tôi, trước 4.0. Cảm ơn!
nealmcb

Điều này thực sự bao gồm các cài đặt / dữ liệu?
Không ai

7

Đây là lệnh của tôi để sao lưu mọi thứ

./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. liệt kê tất cả các tập tin
  2. bỏ qua các liên kết
  3. cho
    • files: xuất lệnh kéo adb
    • thư mục: tạo thư mục (trong trường hợp chúng ta kéo sth trống) và xuất lệnh kéo adb
  4. thực hiện mọi thứ trong bash

Có một số tệp mà tôi bị từ chối cấp phép - nhưng vì bản sao lưu này được tạo để root thiết bị, tôi không thể có thêm quyền :(


1
Điều này thực sự xuất hiện để sao lưu tất cả các tệp (trừ các bit "bị từ chối cấp phép") ngay cả trên các Android cũ hơn (trong trường hợp này là Gingerbread 2.3.3). Tôi sử dụng biến thể này (đã thêm -pparam để mkdirtránh một số thông báo lỗi và xóa ./trước ./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
Một cách đơn giản hơn nhiều để thực hiện sao lưu đệ quy tất cả các tệp, mà không cần bất kỳ regex ưa thích nào là "adb pull /."
JC Hulce 2/2/2016

5

Nếu tôi hiểu bạn chính xác, liên kết này có thể là những gì bạn đang tìm kiếm. Để tóm tắt:

1) Chạy adb devicesđể đảm bảo thiết bị của bạn được đính kèm.

2) Chạy adb pull /data/app ./để lấy tất cả các APK ứng dụng và đặt chúng vào thư mục hiện tại.
a) Hoặc Chạy adb pull /system/sd/app ./để tải ứng dụng trên thẻ SD.

3) Cài đặt được đặt ở nhiều nơi khác nhau, vì vậy hãy tìm ra vị trí và sau đó sử dụng cùng một adb pulllệnh để lấy chúng.

Và sau đó là chi tiết liên kết cách khôi phục dựa trên Mac hoặc Windows.

Ngoài ra, có vẻ như bmgrlệnh bạn đã đề cập cũng sẽ hoạt động với một vài lệnh đơn giản ( adb shell bmgr backup <package>để sao lưu và adb shell bmgr restore <package>khôi phục). Bạn đang tìm kiếm gì nữa?


1
Như Alexander Lucas lưu ý trong câu trả lời của mình dưới đây, bmgrlệnh này là một công cụ để các nhà phát triển kiểm tra sao lưu / khôi phục ứng dụng. Nó không thực sự sao chép bất kỳ dữ liệu nào ra khỏi thiết bị, vì vậy nó không có ích.
PT

Không hoạt động trên adb 1.0.30 với thiết bị Gingerbread:pull: building file list... 0 files pulled. 0 files skipped.
Stéphane Gourichon

Bạn adb pullsẽ không làm việc trên thiết bị không cắm rễ cho dữ liệu ứng dụng riêng. Và bmgrchỉ để kiểm soát sao lưu đám mây của
Google

2

vấn đề có thể là do nhiều thiết bị / trình giả lập được kết nối.

kiểm tra adb devicesxem nó có hiển thị nhiều hơn một thiết bị không thì nó có thể không kết nối được specialy to emulators.

chạy adb usbnó sẽ khởi động lại các thiết bị khác, sau đó ngắt kết nối / kết nối lại cáp usb, bây giờ chạy

adb devices

nó sẽ chỉ hiển thị một thiết bị.

bây giờ làm

adb backup -all

và bạn nên đi thật tốt :)


Tôi sẽ phải làm gì nếu tôi sử dụng lệnh cục bộ thông qua trình giả lập thiết bị đầu cuối cho Android?
dùng2284570

2

Đảm bảo chạy bản cập nhật SDK và kiểm tra cụ thể hộp cho Trình điều khiển USB của Google và cập nhật SDK.

Sau khi bật gỡ lỗi USB trên thiết bị của bạn và cắm vào PC, bạn sẽ nhận được lời nhắc về việc cài đặt trình điều khiển. Ngay cả khi trình quản lý thiết bị mở thành công và tìm thấy điện thoại của bạn, hãy nhấp chuột phải và cập nhật trình điều khiển và trỏ nó vào thư mục trình điều khiển Google USB trong SDK > Extras > Google USBvà để nó cập nhật trình điều khiển.

Sau đó, bạn sẽ có thể rút toàn bộ bản sao lưu khỏi thiết bị của mình.


Điều này đã khắc phục vấn đề cho tôi khi tôi có nó. Các trình điều khiển không phải là vấn đề, nhưng bản thân ADB đã quá lỗi thời.
AJ Henderson

1

Tôi có một GS4 mà tôi cần để sao lưu và không may gặp phải lỗi này. Sau một chút gãi đầu (và chửi thề) tôi đã tìm thấy một bản sửa lỗi mà tôi hy vọng sẽ có hiệu quả với bạn. Tôi đã có thể tìm thấy điều này bằng cách chỉ cần chạy abdvà cuộn qua các tài liệu trợ giúp. Tôi thấy rằng đó -dlà một tham số "hướng lệnh tới thiết bị USB được kết nối duy nhất". Vì vậy, sau khi cắm và chugging tôi đã làm cho nó hoạt động cho tôi. Lệnh tôi đã sử dụng là:

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

Hy vọng điều này làm việc cho một người có cùng một vấn đề tôi đã có.


0

Tôi đã có cùng một vấn đề và cũng là tiền-ICS. Những gì tôi đã làm để làm việc xung quanh nó đã được sử dụng một ls /và awk (với grep để bỏ qua các liên kết) để tạo một tệp bó kéo từng thư mục thực tế vào một thư mục trên PC của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.