Trích xuất các bản sao lưu TWRP được thực hiện với adb


10

Tôi có điện thoại thông minh Samsung Galaxy S2 GT-I9100 với LineageOS và TWRP. Mỗi tuần tôi tạo một bản sao lưu bằng lệnh sau:

adb backup -f twrp-20170322.ab --twrp boot data system

Tôi cũng có thể tùy chọn sử dụng --compresstùy chọn này.

Có cách nào để giải nén twrp-20170322.abtập tin sao lưu bằng các công cụ dòng lệnh GNU / Linux không? Tôi cũng sẽ xem xét việc cài đặt phần mềm bổ sung nếu cần, nhưng nó phải miễn phí (như trong tự do).

Liên kết:

Câu trả lời:


1

Miễn là bạn không bảo vệ nó bằng mật khẩu:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • ddlà "Trình sao chép đĩa" (còn được gọi là "trình hủy đĩa" trong trường hợp bạn nhầm lẫn giữa các tham số của nó ifvà chuyển đổi of;)
  • bs=23 khuyên nó nên sử dụng kích thước khối 24 byte, mà chúng ta cần
  • skip=1 bỏ qua 1 khối 24 byte ("tiêu đề sao lưu")
  • đầu ra được dẫn opensslđể xử lý và giải nén nó
  • Khoan và đầu ra từ đó được chuyển hướng đến một Tarball

Từ đó, bạn nên biết theo cách của mình: chỉ đơn giản là "cởi trói" (giải nén) những gì bạn muốn.

Tại sao nó sử dụng $1? Vâng, chúng tôi đã copy dòng này từ ab2tar, được bao gồm với công cụ nhỏ của tôi Adebar bạn có thể quan tâm cũng như: tạo ra một tài liệu đẹp thiết bị, kịch bản sao lưu và nhiều hơn nữa, tất cả thông qua ADB sử dụng không có gì nhưng Bash 😇 Vì vậy, đặt dòng đó trong một nhỏ kịch bản shell nhỏ, và gọi nó:

ab2tar twrp-20170322.ab

Sau đó tìm một twrp-20170322.tarkết quả. Tất nhiên, điều này đòi hỏi opensslphải được cài đặt trên máy Linux của bạn.


Tôi nhận được thông báo lỗi sau: 140376894071512: lỗi: 29065064: lib (41): BIO_ZLIB_READ: lỗi lạm phát zlib: c_zlib.c: 548: lỗi zlib: lỗi dữ liệu
Francesco Turco

Chưa bao giờ thấy điều đó. Có thể TWRP sử dụng một phương pháp nén khác với ADB tiêu chuẩn (tôi không thể tìm thấy chi tiết về điều đó)? Hoặc, như bạn đã không chỉ định --compresskhi tạo bản sao lưu, tạo bản sao lưu không nén? Trong trường hợp sau, hãy thử bỏ zlibtham số (hoặc thực hiện theo cách khác và chỉ định --compresskhi tạo bản sao lưu;).
Izzy

Tôi đã thử với: dd if = twrp-20170320.ab bs = 24 Skip = 1> twrp-20170320.tar (không cần chèn openssl). Nhưng khi tôi cố gắng liệt kê nội dung của kho lưu trữ tar bằng tar -tf twrp-20170320.tar tôi nhận được: tar: Đây không giống như một kho lưu trữ tar; tar: Bỏ qua tiêu đề tiếp theo; tar: Thoát với trạng thái lỗi do lỗi trước
Francesco Turco

Có một lý do cho việc không sử dụng --compresstùy chọn với adb: nó nén cách kém hiệu quả hơn xz. Tôi thích tiết kiệm càng nhiều không gian càng tốt. Nhưng điều đó không liên quan đến vấn đề ban đầu của tôi.
Francesco Turco

Những gì tôi mô tả ở trên hoạt động tốt đối với các bản sao lưu ADB "thông thường" (tôi sử dụng nó thường xuyên cho những bản sao đó và tôi cũng không sử dụng --compressnó ở đó). Từ tuyên bố của bạn ( adb backup …) tôi giả sử định dạng rất giống nhau. Nếu bạn chỉ sử dụng một nén khác nhau, bạn phải xem xét điều đó. openssllà cần thiết để giải mã bản sao lưu - vì vậy nếu không có điều đó, bạn sẽ không có được một hợp lệ .tar. Từ những bình luận cuối cùng của bạn, tôi cho rằng bạn nên thay thế zlibbằng phần tương ứng cho xz. Ngoài ra, tôi không có ý tưởng, xin lỗi.
Izzy

1

Tôi đã thấy rằng .abcác tệp do TWRP tạo ra khác với các adb backuptệp thông thường , do đó phần bù khác với .abcác tệp thông thường . Tôi đã có thể kiểm tra và trích xuất các tệp bằng cách sử dụng (ví dụ để kiểm tra) lệnh sau:

dd if=backup.ab bs=512 skip=1 | tar ft -

Rõ ràng, tiêu đề có thể dài hơn, nhưng nó phải được căn chỉnh với các ranh giới 512 byte, vì vậy chỉ cần gập skip=tham số nếu nó không thể tìm thấy nó lúc đầu.

Lưu ý rằng định dạng tệp được xác định trong twadbstream.h , nếu bạn cần nghiên cứu sâu hơn về vấn đề này.


0

Vấn đề với cách tiếp cận dựa trên dd ngây thơ là có siêu dữ liệu thường xuyên trong tệp. Điều này dẫn đến tham nhũng cho các tập tin có độ dài đáng kể.

Tôi đã viết một công cụ trích xuất sử dụng twadbstream.h (cảm ơn @anarcat) mà tôi đã sử dụng để khôi phục thành công các bản sao lưu TWRP ADB đa hệ thống lớn (~ 10GB). twrpabx

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.