Telefonumda yedek dosyaları depolamak için yeterli alan yok bu yüzden Nandroid yedeklemesi yapmanın ve PC'de depolanan dosyalarla geri yüklemenin bir yolu olup olmadığını merak ediyorum.
Telefonumda yedek dosyaları depolamak için yeterli alan yok bu yüzden Nandroid yedeklemesi yapmanın ve PC'de depolanan dosyalarla geri yüklemenin bir yolu olup olmadığını merak ediyorum.
Yanıtlar:
Benzer hayal kırıklıkları nedeniyle tam olarak bu amaç için bazı araçlar yazdım : https://github.com/dlenski/tetherback
Bu araçlar Python'da yazılmıştır ve adb
nandroid tarzı yedeklemeler (gelen ham bölüm görüntüleri dd if=/dev/block/mmcblk0pXX
) veya TWRP stili yedeklemeler (ham bölüm görüntüleri ve tarball'ların karışımı ext4
) oluşturmak için kullanılır.
Doğru bölüm düzenini araştırmaya çalışırlar ve yedeklemenin ilerlemesini gösterirler:
$ ./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
Bu devam eden bir çalışmadır - geribildirim çok açığız!
Gereksinimler:
progressbar
paket gereklidir ( pip install progressbar
yapmalı)adb
(Android Hata Ayıklama Köprüsü) komut satırı araçlarıEDIT: https://github.com/dlenski/tetherback için trafiğin çoğu gibi görünüyor bu konuya geliyor. Aşağıdaki yorumlarda açıklanan veri bozulması ile ilgili erken sorunların tümü çözüldü; Tetherback şimdi yolsuzluğa karşı çok güçlü kontroller içeriyor.
gzip
değiştirerek L46 , ama bu aslında bir sorundur şüpheliyim. Linux mu yoksa Windows mu kullanıyorsunuz? Ne yazık ki, Windows adb altında CRLF karakterlerini düzenler , bu, kullandığım tekniği kullanarak bir ikili görüntü aktarmanın mümkün olmadığı anlamına gelir. Gerekirse bunun için bir geçici çözüm yazabilirim.
XDA geliştiricilerine ait bir iş parçacığında, bir nandroid sdcard kullanmadan doğrudan bilgisayarınıza nasıl yedekleme yapılacağı açıklanmaktadır . Tabii ki sadece köklü cihazlarda çalışır. Diğer gereksinimler arasında Linux / MacOS gibi bir Posix OS (Windows kullanıcıları bunu Cygwin ile taklit edebilir) ve ADB (yani tüm SDK'yı ya da en azından minimum bir kurulumu ) içerir. Ayrıca, busybox
cihazda mevcut olması ve USB hata ayıklamanın etkin olması gerekir .
Makalede, bir Nandroid yedeği oluşturmak için gereken komutlar adım adım anlatılmaktadır. Temel olarak, cihazınızın bölümlerinin blok düzeyinde bir kopyasını oluşturmak için adlandırılmış bir kanal üzerinden dd kullanıyor - temel olarak bir nandroid yedeklemesi .
(ADB'yi zaten yapılandırdıysanız, telefonunuzun çalıştığını ve bir Linux sistemi veya benzerleri üzerinde çalıştığınızı), bölüm içeriğini tek bir astarla dökmenin mümkün olduğunu fark ettim:
adb pull /dev/block/mmcblk0
Bu, netcat ve borularla dans edilmediği sürece (şartlara bağlı olarak gerekebilir veya gerekmeyebilir), bit-bit flash belleğin bit içeriğini almak için XDA iş parçasında açıklananlarla aynıdır. Açıkçası, verileri kopyalarken flash bellekte hiçbir bölüm monte edilmemelidir (örneğin adb mount
, herhangi bir bölümü listelemeden kurtarma işleminden yapın ), aksi halde Android'in veri yazmaya karar verdiği yerlerde tutarsız bir yedekleme riskiyle karşı karşıya kalırsınız. yedekleme zamanı.
Basit bir geri yükleme için:
pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0
değil iş olarak edecektir adb shell
boru desteklemez. Ancak bir şekilde dd of=/dev/block/mmcblk0
aygıtın kendisinde bir şey yapabilirseniz , yedeğinizi geri yüklemesi gerektiğini düşünüyorum. Bu konuda bana güvenme, telefonunu kirletebilir. Henüz test etmedim; Şimdiye kadar sadece tek bir bölümü kurtarmam gerekiyordu ve dd
bunun için iyiydim.
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)İşletim sistemi kök sınırlamalarını önlemek için kurtarma kullanın
./adb reboot recovery
çekme yapmak
./adb pull /dev/block/mmcblk0 mmcblk0.img