มีวิธีทำสำรอง Nandroid โดยตรงกับพีซีแล้วคืนค่าโดยตรงจากพีซีด้วยหรือไม่


22

โทรศัพท์ของฉันมีพื้นที่ไม่เพียงพอในการจัดเก็บไฟล์สำรองดังนั้นฉันสงสัยว่ามีวิธีการสำรองข้อมูล Nandroid และกู้คืนด้วยไฟล์ที่เก็บไว้ในพีซีหรือไม่


1
ฉันสงสัยว่ามีวิธีใดในการทำเช่นนี้ คุณควรลองสำรองข้อมูลไปยังการ์ด SD ภายนอกแล้วโอนไปยังคอมพิวเตอร์ หรือเพียงแค่ย้ายไฟล์ไปยังคอมพิวเตอร์ของคุณเพียงพอเพื่อให้คุณสามารถสร้างและกู้คืนข้อมูลสำรองในโทรศัพท์ของคุณแล้วย้ายไฟล์กลับเมื่อคุณทำเสร็จ
VarnerBeast14

คำตอบ:


14

ฉันได้เขียนเครื่องมือบางอย่างเพื่อจุดประสงค์นี้อย่างแน่นอนเนื่องจากความผิดหวังที่คล้ายกัน: 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  

นี่เป็นงานที่กำลังดำเนินอยู่ - ข้อเสนอแนะยินดีต้อนรับอย่างมาก!

ที่ต้องการ:

  • Python 3.3+ ภายใต้ Linux / OSX / Windows
    • progressbarแพ็คเกจจำเป็น ( pip install progressbarควรทำ)
  • adb (Android Debug Bridge) เครื่องมือบรรทัดคำสั่ง
  • อุปกรณ์ Android ที่ติดตั้งมา พร้อมกับการกู้คืน TWRP
    • ข้อกำหนดสำหรับอุปกรณ์ที่รูทและการกู้คืนที่กำหนดเองจะไม่หายไปไหน : หากคุณไม่มีสิทธิ์เข้าถึงรูทคุณจะไม่สามารถคัดลอกเนื้อหาทั้งหมดในหน่วยความจำของอุปกรณ์ได้อย่างง่ายดาย

แก้ไข:ดูเหมือนว่าการเข้าชมส่วนใหญ่ไปที่https://github.com/dlenski/tetherbackมาจากหัวข้อนี้ ปัญหาเริ่มแรกที่ความเสียหายของข้อมูลที่อธิบายในความคิดเห็นด้านล่างได้รับการแก้ไขทั้งหมดแล้ว tetherback ตอนนี้มีการตรวจสอบที่แข็งแกร่งมากต่อการทุจริต


ก่อนอื่นขอบคุณสำหรับการทำโปรแกรม ดูเหมือนว่าจะทำงานได้ดียกเว้นเมื่อใดก็ตามที่ฉันใช้ nandroid.py ไฟล์ที่ใหญ่กว่าเช่น system.img.gz และ userdata.img.gz ล้มเหลวเมื่อทำการคลายบีบอัด gzip "crc ล้มเหลว" และสร้างไฟล์ img ขนาดประมาณ 1 / 5th ของไฟล์ img.gz อย่างไรก็ตาม bootloader.img.gz จะคลายการบีบอัดได้ดี เป็นของพวกเขาอยู่แล้วที่คุณสามารถปิดการใช้งาน gzipping หรือคุณรู้วิธีอื่นในการแก้ไขไฟล์ที่เสียหาย?
I'm_With_Stupid

1
@ I'm_With_Stupid คุณสามารถปิดการใช้งานgzipโดยการแก้ไขL46แต่ฉันสงสัยว่านี่เป็นปัญหา คุณใช้ Linux หรือ Windows หรือไม่ แต่น่าเสียดายที่ใน Windows adb ทำให้ตัวละคร CRLF ยุ่งเหยิงซึ่งหมายความว่าเป็นไปไม่ได้ที่จะส่งภาพอิมเมจไบนารี่ผ่านมันโดยใช้เทคนิคที่ฉันใช้ ฉันสามารถเขียนวิธีแก้ปัญหาสำหรับสิ่งนี้ถ้าจำเป็น
ด่าน

นอกจากนี้หากคุณสามารถให้รายละเอียดเพิ่มเติมได้โปรดเพิ่มเป็นปัญหาใหม่ในที่เก็บ Github เพราะช่วยให้ติดตามได้ง่ายขึ้น!
ด่าน

1
ฉันจะเพิ่มปัญหาของฉันเป็นปัญหาใหม่ดังนั้นเราอาจจะยังคงการสนทนาของเรามี
I'm_With_Stupid

8

ด้ายนักพัฒนา XDA อธิบายวิธีการทำสำรองข้อมูล Nandroid โดยตรงไปยังเครื่องคอมพิวเตอร์ของคุณโดยไม่ต้องใช้ sdcard แน่นอนมันใช้งานได้กับอุปกรณ์ที่รูทเท่านั้น ข้อกำหนดเพิ่มเติมรวมถึง Posix OS เช่น Linux / MacOS (ผู้ใช้ Windows สามารถเลียนแบบสิ่งนี้ด้วย Cygwin) และ ADB (เช่น SDK ทั้งหมดหรืออย่างน้อยก็ติดตั้งน้อยที่สุด ) นอกจากนี้busyboxจะต้องมีอยู่ในอุปกรณ์และเปิดใช้งานการแก้ไขข้อบกพร่อง USB

บทความอธิบายทีละขั้นตอนคำสั่งที่จำเป็นในการสร้างการสำรองข้อมูล Nandroid โดยทั่วไปก็ใช้DDผ่านไปป์เพื่อสร้างสำเนาระดับบล็อกของพาร์ทิชันของอุปกรณ์ของคุณ - สิ่ง โดยทั่วไปคือ


2
ขอบคุณสำหรับตัวชี้ @Hudayfah! แต่ในขณะที่โพสต์ลิงค์เท่านั้นในทางทฤษฎีอาจตอบคำถามในทางทฤษฎีมันจะดีกว่าที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง มิฉะนั้นคำตอบจะไร้ประโยชน์ในกรณีที่ลิงก์เสีย ฉันอัปเดตโพสต์ของคุณตามนั้นเพื่อแสดงว่ามีลักษณะอย่างไรเพื่อช่วยคุณเกี่ยวกับโพสต์ในอนาคต (ซึ่งคุณหวังว่าจะทำให้ :) ยินดีต้อนรับสู่ชุมชนของเราอย่างอบอุ่น!
Izzy

ด้วยวิธีที่คุณจะไปเกี่ยวกับการคืนค่าการสำรองข้อมูลนี้สมมติว่าคุณมีการเข้าถึง fastboot หรืออาจ adb ในการกู้คืน?
jiggunjer

ทำไมมันต้องถูกรูท?
user4951

2

ฉันสังเกตเห็นว่า (หากคุณได้กำหนดค่า 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ใช้ได้สำหรับเรื่องนั้น


2
  1. แสดงตัวเลือกผู้พัฒนา ( Settings > Developer> tap build 7 times)
  2. เปิดใช้งานการแก้ไขข้อบกพร่อง USB ( Settings > Developer > USB Debugging)
  3. ใช้การกู้คืนเพื่อหลีกเลี่ยงข้อ จำกัด รูท OS

    ./adb reboot recovery

  4. ทำดึง

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


ฉันจะคืนค่าข้อมูลสำรองดังกล่าวได้อย่างไร
Suma

@Suma พร้อม adb push (หรือติดตั้ง img และคัดลอกไฟล์ที่น่าสนใจ)
user1133275

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