โทรศัพท์ของฉันมีพื้นที่ไม่เพียงพอในการจัดเก็บไฟล์สำรองดังนั้นฉันสงสัยว่ามีวิธีการสำรองข้อมูล Nandroid และกู้คืนด้วยไฟล์ที่เก็บไว้ในพีซีหรือไม่
โทรศัพท์ของฉันมีพื้นที่ไม่เพียงพอในการจัดเก็บไฟล์สำรองดังนั้นฉันสงสัยว่ามีวิธีการสำรองข้อมูล Nandroid และกู้คืนด้วยไฟล์ที่เก็บไว้ในพีซีหรือไม่
คำตอบ:
ฉันได้เขียนเครื่องมือบางอย่างเพื่อจุดประสงค์นี้อย่างแน่นอนเนื่องจากความผิดหวังที่คล้ายกัน: https://github.com/dlenski/tetherback
เครื่องมือเหล่านี้เขียนใน Python และใช้adb
เพื่อสร้างการสำรองข้อมูลสไตล์ nandroid (อิมเมจพาร์ติชันแบบดิบจากdd if=/dev/block/mmcblk0pXX
) หรือการสำรองข้อมูลสไตล์ TWRP (การผสมผสานระหว่างอิมเมจพาร์ติชันแบบดิบและ tarballs สำหรับext4
พาร์ติชัน)
พวกเขาพยายามตรวจสอบเค้าโครงพาร์ติชันที่ถูกต้องและแสดงความคืบหน้าของการสำรองข้อมูล:
$ ./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
นี่เป็นงานที่กำลังดำเนินอยู่ - ข้อเสนอแนะยินดีต้อนรับอย่างมาก!
ที่ต้องการ:
progressbar
แพ็คเกจจำเป็น ( pip install progressbar
ควรทำ)adb
(Android Debug Bridge) เครื่องมือบรรทัดคำสั่งแก้ไข:ดูเหมือนว่าการเข้าชมส่วนใหญ่ไปที่https://github.com/dlenski/tetherbackมาจากหัวข้อนี้ ปัญหาเริ่มแรกที่ความเสียหายของข้อมูลที่อธิบายในความคิดเห็นด้านล่างได้รับการแก้ไขทั้งหมดแล้ว tetherback ตอนนี้มีการตรวจสอบที่แข็งแกร่งมากต่อการทุจริต
gzip
โดยการแก้ไขL46แต่ฉันสงสัยว่านี่เป็นปัญหา คุณใช้ Linux หรือ Windows หรือไม่ แต่น่าเสียดายที่ใน Windows adb ทำให้ตัวละคร CRLF ยุ่งเหยิงซึ่งหมายความว่าเป็นไปไม่ได้ที่จะส่งภาพอิมเมจไบนารี่ผ่านมันโดยใช้เทคนิคที่ฉันใช้ ฉันสามารถเขียนวิธีแก้ปัญหาสำหรับสิ่งนี้ถ้าจำเป็น
ด้ายนักพัฒนา XDA อธิบายวิธีการทำสำรองข้อมูล Nandroid โดยตรงไปยังเครื่องคอมพิวเตอร์ของคุณโดยไม่ต้องใช้ sdcard แน่นอนมันใช้งานได้กับอุปกรณ์ที่รูทเท่านั้น ข้อกำหนดเพิ่มเติมรวมถึง Posix OS เช่น Linux / MacOS (ผู้ใช้ Windows สามารถเลียนแบบสิ่งนี้ด้วย Cygwin) และ ADB (เช่น SDK ทั้งหมดหรืออย่างน้อยก็ติดตั้งน้อยที่สุด ) นอกจากนี้busybox
จะต้องมีอยู่ในอุปกรณ์และเปิดใช้งานการแก้ไขข้อบกพร่อง USB
บทความอธิบายทีละขั้นตอนคำสั่งที่จำเป็นในการสร้างการสำรองข้อมูล Nandroid โดยทั่วไปก็ใช้DDผ่านไปป์เพื่อสร้างสำเนาระดับบล็อกของพาร์ทิชันของอุปกรณ์ของคุณ - สิ่งNandroid สำรองข้อมูลโดยทั่วไปคือ
ฉันสังเกตเห็นว่า (หากคุณได้กำหนดค่า ADB ไว้แล้วโทรศัพท์ของคุณจะรูทและคุณกำลังทำงานกับระบบ Linux หรือคล้ายกัน) คุณสามารถถ่ายโอนเนื้อหาพาร์ติชั่นได้ด้วยการซับเดียว:
adb pull /dev/block/mmcblk0
นี่เป็นสิ่งเดียวกับที่อธิบายไว้ในเธรด XDA สำหรับการรับเนื้อหาแบบบิตต่อบิตของหน่วยความจำแฟลชยกเว้นโดยไม่ต้องเต้นกับ netcat และท่อ (ซึ่งอาจจำเป็นหรือไม่ขึ้นอยู่กับสถานการณ์ฉันเดา) เห็นได้ชัดว่าไม่ควรติดตั้งพาร์ติชั่นหน่วยความจำแฟลชในขณะที่ทำการคัดลอกข้อมูล (เช่นทำจากการกู้คืนในขณะที่adb mount
ไม่มีรายการพาร์ติชั่นติดตั้ง) มิฉะนั้นคุณอาจเสี่ยงต่อการสำรองข้อมูลที่ไม่สอดคล้องกันในสถานที่ที่ Android ตัดสินใจเขียนข้อมูล เวลาของการสำรองข้อมูล
โปรดทราบว่าสำหรับการคืนค่าง่าย ๆ :
pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0
จะไม่ทำงานเนื่องจากadb shell
ไม่รองรับการวางท่อ แต่ถ้าคุณสามารถทำได้dd of=/dev/block/mmcblk0
บนอุปกรณ์ตัวเองฉันคิดว่ามันควรคืนค่าการสำรองข้อมูลของคุณ อย่าเชื่อใจฉันเกี่ยวกับสิ่งนี้ ฉันยังไม่ได้ทดสอบ จนถึงตอนนี้ฉันแค่ต้องการกู้คืนพาร์ติชันเดียวและdd
ใช้ได้สำหรับเรื่องนั้น
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)ใช้การกู้คืนเพื่อหลีกเลี่ยงข้อ จำกัด รูท OS
./adb reboot recovery
ทำดึง
./adb pull /dev/block/mmcblk0 mmcblk0.img