Có cách nào để sao lưu Nandroid trực tiếp vào pc và sau đó khôi phục nó trực tiếp từ pc không?


22

Điện thoại của tôi không có đủ dung lượng để lưu trữ các tệp sao lưu, vì vậy tôi tự hỏi liệu có cách nào để thực hiện sao lưu và khôi phục Nandroid với các tệp được lưu trữ trên pc không.


1
Tôi nghi ngờ rằng có bất kỳ cách nào để làm điều này. Bạn nên thử sao lưu vào thẻ SD bên ngoài và sau đó chuyển sang máy tính. Hoặc chỉ cần di chuyển đủ tệp vào máy tính của bạn để bạn có thể tạo và khôi phục bản sao lưu trên điện thoại của mình và sau đó di chuyển các tệp trở lại khi bạn hoàn tất.
VarnerBeast14

Câu trả lời:


14

Tôi đã viết một số công cụ cho chính xác mục đích này, do sự thất vọng tương tự: https://github.com/dlenski/tetherback

Các công cụ này được viết bằng Python và sử dụng adbđể tạo các bản sao lưu kiểu nandroid (hình ảnh phân vùng thô từ dd if=/dev/block/mmcblk0pXX) hoặc bản sao lưu kiểu TWRP (hỗn hợp các hình ảnh phân vùng thô và tarball cho các ext4phân vùng).

Họ cố gắng thăm dò bố cục phân vùng chính xác và hiển thị tiến trình sao lưu:

$ ./twrp_backup.py
Device reports TWRP kernel (3.4.0-bricked-hammerhead-twrp-g7b77eb4).
Reading partition map for mmcblk0 (29 partitions)...
  partition map: 100% Time: 0:00:03                                                                                                                                                                                
Saving TWRP backup images in twrp-backup-2016-03-17--18-53-12/ ...
Saving partition boot (mmcblk0p19), 22 MiB uncompressed...
  boot.emmc.win: 100% Time: 0:00:05   3.10 MB/s                                                                                                                                                                    
Saving tarball of mmcblk0p25 (mounted at /system), 1024 MiB uncompressed...
  system.ext4.win:   2% ETA:  0:06:29   2.69 MB/s  

Đây là một công việc trong tiến trình phản hồi rất đáng hoan nghênh!

Yêu cầu:

  • Python 3.3+ trong Linux / OSX / Windows.
    • progressbargói là cần thiết ( pip install progressbarnên làm điều đó)
  • adb (Cầu gỡ lỗi Android) công cụ dòng lệnh
  • Thiết bị Android đã root với cài đặt phục hồi TWRP .
    • Yêu cầu cho một thiết bị đã root và phục hồi tùy chỉnh sẽ không bao giờ biến mất : nếu bạn không có quyền truy cập root, thì bạn không có cách nào để sao chép toàn bộ nội dung trong bộ nhớ của thiết bị, đơn giản như vậy.

EDIT: Có vẻ như hầu hết lưu lượng truy cập đến https://github.com/dlenski/tetherback đến từ chủ đề này. Các vấn đề ban đầu với tham nhũng dữ liệu được mô tả trong các ý kiến ​​dưới đây đã được giải quyết; Tetherback bây giờ bao gồm kiểm tra rất mạnh chống tham nhũng.


Trước hết cảm ơn vì đã làm chương trình. Nó dường như hoạt động tốt, ngoại trừ bất cứ khi nào tôi sử dụng nandroid.py các tệp lớn hơn, chẳng hạn như system.img.gz và userdata.img.gz, đều thất bại khi giải nén gzip. "Crc fail" và nó tạo ra tệp img có kích thước bằng 1/5 kích thước của tệp img.gz. Tuy nhiên, bootloader.img.gz giải nén tốt. Có phải dù sao họ cũng có thể vô hiệu hóa gzipping hoặc bạn có biết một cách khác để sửa tệp bị hỏng không?
Tôi_With_Stool 20/03/2016

1
@ Tôi_With_Stool, bạn có thể vô hiệu hóa gzipbằng cách sửa đổi L46 , nhưng tôi nghi ngờ đây thực sự là vấn đề. Bạn đang chạy Linux hay Windows? Thật không may, trong Windows adb mang các ký tự CRLF , có nghĩa là không thể truyền hình ảnh nhị phân thông qua nó bằng kỹ thuật tôi đang sử dụng. Tôi có thể viết một cách giải quyết cho việc này nếu cần.
Dan

Ngoài ra, nếu bạn có thể cung cấp thêm bất kỳ chi tiết nào, vui lòng thêm nó dưới dạng Vấn đề mới trên kho Github vì nó giúp bạn dễ dàng theo dõi hơn!
Dan

1
Tôi đã thêm các vấn đề của mình như những vấn đề mới vì vậy có lẽ chúng ta nên tiếp tục cuộc trò chuyện của mình ở đó .
Tôi_With_Stool 20/03/2016

8

Một luồng trên các nhà phát triển XDA mô tả Cách tạo bản sao lưu nandroid trực tiếp vào máy tính của bạn mà không cần sử dụng sdcard . Tất nhiên nó chỉ hoạt động trên các thiết bị đã root. Các yêu cầu khác bao gồm HĐH Posix như Linux / MacOS (người dùng Windows có thể mô phỏng điều này với Cygwin) và ADB (vì vậy toàn bộ SDK hoặc ít nhất là cài đặt tối thiểu ). Hơn nữa, busyboxphải có sẵn trên thiết bị và kích hoạt gỡ lỗi USB .

Bài viết mô tả từng bước các lệnh cần thiết để tạo bản sao lưu Nandroid. Về cơ bản, nó sử dụng dd thông qua một đường ống có tên để tạo một bản sao cấp khối của các phân vùng thiết bị của bạn - về cơ bản là một .


2
Cảm ơn con trỏ, @Hudayfah! Nhưng trong khi các bài viết chỉ liên kết về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Nếu không, câu trả lời trở nên vô dụng trong trường hợp liên kết chết. Tôi đã cập nhật bài viết của bạn một cách phù hợp để cho thấy nó trông như thế nào, để giúp bạn liên quan đến các bài đăng trong tương lai (mà bạn hy vọng sẽ thực hiện :) Chào mừng nồng nhiệt đến cộng đồng của chúng tôi!
Izzy

Ngoài ra, làm thế nào bạn sẽ khôi phục bản sao lưu này, giả sử bạn chỉ có quyền truy cập vào fastboot hoặc có thể adb trong recovery?
jiggunjer

Tại sao nó phải được root?
dùng4951

2

Tôi nhận thấy rằng (nếu bạn đã cấu hình ADB, điện thoại của bạn đã được root và bạn đang làm việc trên một hệ thống Linux hoặc tương tự), có thể kết xuất nội dung phân vùng bằng một lớp lót duy nhất:

adb pull /dev/block/mmcblk0

Điều này giống như những gì được mô tả trong luồng XDA để lấy nội dung bit-bit-bit của bộ nhớ flash, ngoại trừ không có điệu nhảy với netcat và ống dẫn (có thể cần hoặc không tùy thuộc vào hoàn cảnh, tôi đoán vậy). Rõ ràng không có phân vùng nào trên bộ nhớ flash nên được gắn trong khi sao chép dữ liệu (ví dụ: thực hiện từ khôi phục trong khi adb mountkhông liệt kê bất kỳ phân vùng nào được gắn), nếu không, bạn sẽ gặp rủi ro sao lưu không nhất quán ở những nơi mà Android quyết định ghi dữ liệu tại thời gian dự phòng.

Lưu ý rằng để khôi phục một đơn giản:

pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0

sẽ không hoạt động, vì adb shellkhông hỗ trợ đường ống. Nhưng nếu bạn bằng cách nào đó có thể tự làm một dd of=/dev/block/mmcblk0thiết bị, tôi cho rằng nó sẽ khôi phục lại bản sao lưu của bạn. Đừng tin tôi về điều này mặc dù, nó cũng có thể làm hỏng điện thoại của bạn. Tôi chưa thử nó bao giờ; Cho đến nay tôi chỉ cần khôi phục một phân vùng duy nhất và ddvẫn ổn cho điều đó.


2
  1. Hiển thị tùy chọn nhà phát triển ( Settings > Developer> tap build 7 times)
  2. Bật gỡ lỗi USB ( Settings > Developer > USB Debugging)
  3. sử dụng phục hồi để tránh các hạn chế root hệ điều hành

    ./adb reboot recovery

  4. kéo

    ./adb pull /dev/block/mmcblk0 mmcblk0.img


Làm thế nào tôi có thể khôi phục lại bản sao lưu như vậy?
Suma

@Suma với adb đẩy (hoặc gắn img và sao chép các tệp quan tâm)
user1133275

Android sẽ cho phép bạn truy cập toàn bộ bộ nhớ trong một cách dễ dàng?
Melab
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.