Đ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.
Đ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.
Câu trả lời:
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 ext4
phâ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:
progressbar
gói là cần thiết ( pip install progressbar
nên làm điều đó)adb
(Cầu gỡ lỗi Android) công cụ dòng lệnhEDIT: 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.
gzip
bằ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.
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, busybox
phả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 bản sao lưu nandroid .
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 mount
khô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 shell
khô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/mmcblk0
thiế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à dd
vẫn ổn cho điều đó.
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)sử dụng phục hồi để tránh các hạn chế root hệ điều hành
./adb reboot recovery
kéo
./adb pull /dev/block/mmcblk0 mmcblk0.img