Mój telefon nie ma wystarczającej ilości miejsca do przechowywania plików kopii zapasowych, więc zastanawiam się, czy istnieje sposób na wykonanie kopii zapasowej i przywracanie Nandroid za pomocą plików przechowywanych na komputerze.
Mój telefon nie ma wystarczającej ilości miejsca do przechowywania plików kopii zapasowych, więc zastanawiam się, czy istnieje sposób na wykonanie kopii zapasowej i przywracanie Nandroid za pomocą plików przechowywanych na komputerze.
Odpowiedzi:
Z powodu podobnych frustracji napisałem kilka narzędzi do tego właśnie celu: https://github.com/dlenski/tetherback
Narzędzia te są napisane w języku Python i służą adb
do tworzenia kopii zapasowych w stylu nandroid (surowe obrazy partycji dd if=/dev/block/mmcblk0pXX
) lub TWRP (mieszanka surowych obrazów partycji i archiwów tar dla ext4
partycji).
Próbują zbadać poprawny układ partycji i pokazać postęp tworzenia kopii zapasowej:
$ ./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
To praca w toku - opinie są mile widziane!
Wymagania:
progressbar
pakiet jest potrzebny ( pip install progressbar
powinien to zrobić)adb
Narzędzia wiersza polecenia (Android Debug Bridge)EDYCJA: Wygląda na to, że większość ruchu do https://github.com/dlenski/tetherback pochodzi z tego wątku. Wczesne problemy z uszkodzeniem danych opisane w poniższych komentarzach zostały rozwiązane; tetherback obejmuje teraz bardzo silne kontrole przeciwko korupcji.
gzip
, modyfikując L46 , ale wątpię, że to w rzeczywistości problem. Czy korzystasz z systemu Linux lub Windows? Niestety, pod Windows adb zmienia znaki CRLF , co oznacza, że nie można przesłać przez niego obrazu binarnego przy użyciu techniki, której używam. W razie potrzeby mogę napisać obejście tego problemu.
Wątek na temat twórców XDA opisuje, jak wykonać kopię zapasową nandroid bezpośrednio na komputerze bez użycia karty SD . Oczywiście działa tylko na zrootowanych urządzeniach. Dalsze wymagania obejmują system operacyjny Posix, taki jak Linux / MacOS (użytkownicy systemu Windows mogą to emulować za pomocą Cygwin), i ADB (czyli albo cały SDK, albo przynajmniej minimalna instalacja ). Co więcej, busybox
musi być dostępny na urządzeniu i aktywowane debugowanie USB .
W artykule opisano krok po kroku polecenia potrzebne do utworzenia kopii zapasowej Nandroid. Zasadniczo używa dd za pośrednictwem nazwanego potoku do tworzenia kopii blokowych partycji urządzenia - czym w zasadzie jest kopia zapasowa nandroid .
Zauważyłem, że (jeśli masz już skonfigurowany ADB, Twój telefon jest zrootowany i pracujesz na systemie Linux lub podobnym), możliwe jest zrzucenie zawartości partycji za pomocą jednego linijki:
adb pull /dev/block/mmcblk0
Jest to to samo, co opisano w wątku XDA do pobierania zawartości pamięci flash „bit po bicie”, z wyjątkiem tańca bez netcata i potoków (które, jak sądzę, mogą być potrzebne lub nie zależą od okoliczności). Oczywiście podczas kopiowania danych nie należy montować żadnej partycji w pamięci flash (tzn. Zrobić to z odzyskiwania, podczas gdy adb mount
nie wymieniono żadnych zamontowanych partycji), w przeciwnym razie ryzykujesz niespójną kopię zapasową w miejscach, w których Android zdecydował się zapisać dane na czas tworzenia kopii zapasowej.
Pamiętaj, że w celu przywrócenia prostego:
pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0
nie będzie działać, ponieważ adb shell
nie obsługuje instalacji rurowej. Ale jeśli w jakiś sposób możesz zrobić to dd of=/dev/block/mmcblk0
na samym urządzeniu, przypuszczam, że powinno ono przywrócić kopię zapasową. Ale nie ufaj mi w tym, może równie dobrze zepsuć twój telefon. Jeszcze tego nie testowałem; do tej pory potrzebowałem tylko odzyskać jedną partycję i dd
było to w porządku.
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)użyj odzyskiwania, aby uniknąć ograniczeń systemu operacyjnego
./adb reboot recovery
zrób to
./adb pull /dev/block/mmcblk0 mmcblk0.img