แยกการสำรองข้อมูล TWRP ที่ทำด้วย adb


10

ฉันมีสมาร์ทโฟน Samsung Galaxy S2 GT-I9100 พร้อม LineageOS และ TWRP ทุกสัปดาห์ฉันสำรองข้อมูลด้วยคำสั่งต่อไปนี้:

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

ฉันอาจเลือกใช้--compressตัวเลือกเช่นกัน

มีวิธีแยกtwrp-20170322.abไฟล์สำรองข้อมูลด้วยเครื่องมือบรรทัดคำสั่ง stardard GNU / Linux หรือไม่? ฉันจะพิจารณาติดตั้งซอฟต์แวร์เพิ่มเติมหากจำเป็น แต่ต้องฟรี (ตามอิสระ)

ลิงค์:

คำตอบ:


1

หากคุณไม่ได้ป้องกันด้วยรหัสผ่าน:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • ddคือ "ดิสก์โรเนียว" (เรียกว่า "ดิสก์พิฆาต" ในกรณีที่คุณเกิดความสับสนสลับพารามิเตอร์ ans ifและof;)
  • bs=23 แนะนำให้ใช้ขนาดบล็อก 24 ไบต์ซึ่งเราต้อง ...
  • skip=1 ข้าม 1 บล็อกของ 24 ไบต์ ("ส่วนหัวสำรอง")
  • เอาต์พุตจะถูกไพพ์ไปที่opensslการประมวลผลและคลายออก
  • …และผลลัพธ์จากนั้นจะถูกเปลี่ยนเส้นทางไปยัง Tarball

จากตรงนั้นคุณควรรู้วิธีการของคุณเพียงแค่ "untar" (แยก) สิ่งที่คุณต้องการ

เหตุใดจึงใช้$1? ฉันได้คัดลอกบรรทัดนี้จากab2tarซึ่งรวมอยู่ในเครื่องมือเล็ก ๆ ของฉันAdebar ที่คุณอาจสนใจเช่นกัน: สร้างเอกสารอุปกรณ์ที่ดีสคริปต์สำรองและอื่น ๆ ทั้งหมดผ่าน ADB โดยไม่ใช้อะไรเลย สคริปต์ shell ตัวน้อยและเรียกมันว่า:

ab2tar twrp-20170322.ab

จากนั้นหาtwrp-20170322.tarผลลัพธ์ แน่นอนว่าต้องopensslติดตั้งในเครื่อง Linux ของคุณ


ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: 140376894071512: ข้อผิดพลาด: 29065064: lib (41): BIO_ZLIB_READ: ข้อผิดพลาดของ zlib inflate: c_zlib.c: 548: ข้อผิดพลาด zlib: ข้อผิดพลาดข้อมูล
Francesco Turco

ไม่เคยเห็นว่า เป็นไปได้ไหมที่ TWRP ใช้วิธีการบีบอัดที่แตกต่างจาก ADB มาตรฐาน (ฉันหารายละเอียดไม่ได้) หรือตามที่คุณไม่ได้ระบุ--compressเมื่อสร้างการสำรองข้อมูลจะสร้างการสำรองข้อมูลที่ไม่บีบอัด ในกรณีหลังลองปล่อยzlibพารามิเตอร์ออก(หรือทำอย่างอื่นรอบ ๆ และระบุ--compressเมื่อสร้างการสำรองข้อมูล)
Izzy

ฉันลองด้วย: dd if = twrp-20170320.ab bs = 24 skip = 1> twrp-20170320.tar (โดยไม่ต้องใส่openssl) แต่เมื่อฉันพยายามแสดงเนื้อหาของไฟล์เก็บถาวร tar ด้วย tar -tf twrp-20170320.tar ฉันได้รับ: tar: นี่ดูเหมือนจะไม่เก็บถาวร tar; tar: ข้ามไปยังส่วนหัวถัดไป; tar: การออกจากสถานะความล้มเหลวเนื่องจากข้อผิดพลาดก่อนหน้า
Francesco Turco

มีเหตุผลที่ไม่ได้ใช้มาเป็น--compressตัวเลือกที่มีadb: xzมันบีบอัดวิธีที่มีประสิทธิภาพน้อยกว่า ฉันชอบประหยัดพื้นที่มากที่สุด แต่นั่นไม่เกี่ยวข้องกับปัญหาเริ่มแรกของฉัน
Francesco Turco

สิ่งที่ฉันอธิบายไว้ข้างต้นทำงานได้ดีสำหรับการสำรองข้อมูล ADB "ปกติ" (ฉันใช้บ่อยครั้งสำหรับการสำรองข้อมูลเหล่านั้นและฉันไม่ได้ใช้ที่--compressนั่น) จากคำสั่งของคุณ ( adb backup …) ฉันถือว่ารูปแบบเดียวกันมาก หากคุณเพียงแค่ใช้การบีบอัดอื่นคุณต้องพิจารณาสิ่งนั้น opensslเป็นสิ่งจำเป็นในการถอดรหัสการสำรองข้อมูล - .tarโดยไม่ต้องว่าคุณไม่ได้รับที่ถูกต้อง จากความคิดเห็นล่าสุดของคุณผมคิดว่าคุณควรเปลี่ยนจากส่วนที่เกี่ยวข้องสำหรับzlib xzนอกจากนั้นฉันก็ไม่ได้คิด
Izzy

1

ฉันพบว่า.abไฟล์ที่สร้างจากTWRP นั้นแตกต่างจากadb backupไฟล์ปกติดังนั้นออฟเซ็ตจึงแตกต่างจาก.abไฟล์ปกติ ฉันสามารถตรวจสอบและแตกไฟล์โดยใช้ (ตัวอย่างเช่นเพื่อตรวจสอบ) คำสั่งต่อไปนี้:

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

เห็นได้ชัดว่าส่วนหัวนั้นอาจจะยาวกว่า แต่ก็ควรปรับให้สอดคล้องกับขอบเขต 512- ไบต์ดังนั้นเพียงแค่ชนskip=พารามิเตอร์หากไม่สามารถหาได้ในตอนแรก

โปรดทราบว่ารูปแบบไฟล์จะถูกกำหนดในtwadbstream.hหากคุณต้องการขุดลงไปเพิ่มเติม


0

ปัญหาเกี่ยวกับวิธีการที่ใช้ naive dd คือมีข้อมูลเมตาทุกครั้งในไฟล์ ซึ่งส่งผลให้เกิดความเสียหายสำหรับไฟล์ที่มีความยาวที่สำคัญ

ฉันเขียนเครื่องมือการแยกโดยใช้ twadbstream.h (ขอบคุณ @anarcat) ที่ฉันเคยประสบความสำเร็จในการกู้คืนระบบไฟล์หลายไฟล์ขนาดใหญ่ (~ 10GB) TWRP ADB สำรอง twrpabx

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