Existe uma maneira de fazer backup Nandroid diretamente para o PC e depois restaurá-lo diretamente do PC também?

22

Meu telefone não tem espaço suficiente para armazenar arquivos de backup, por isso, pergunto-me se existe uma maneira de fazer backup e restauração do Nandroid com arquivos armazenados no PC.

JatSing
fonte
1
Duvido que haja alguma maneira de fazer isso. Você deve tentar fazer backup em um cartão SD externo e depois transferir para o computador. Ou simplesmente mova arquivos suficientes para o seu computador, para que você possa criar e restaurar o backup no seu telefone e depois mover os arquivos novamente quando terminar.
VarnerBeast14

Respostas:

14

Escrevi algumas ferramentas exatamente para esse fim, devido a frustrações semelhantes: https://github.com/dlenski/tetherback

Essas ferramentas são escritas em Python e usadas adbpara criar backups no estilo nandroid (imagens de partições brutas de dd if=/dev/block/mmcblk0pXX) ou backups no estilo TWRP (mistura de imagens de partições brutas e tarballs para ext4partições).

Eles tentam analisar o layout de partição correto e mostram o progresso do backup:

$ ./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  

Este é um trabalho em andamento - o feedback é muito bem-vindo!

Requisitos:

  • Python 3.3 ou superior em Linux / OSX / Windows.
    • progressbarpacote é necessário ( pip install progressbardeve fazê-lo)
  • adb Ferramentas de linha de comando (Android Debug Bridge)
  • Dispositivo Android enraizado com recuperação TWRP instalada.
    • O requisito para um dispositivo raiz e uma recuperação personalizada nunca desaparecerá : se você não tiver acesso root, não terá como copiar todo o conteúdo da memória do dispositivo, simples assim.

EDIT: parece que a maior parte do tráfego para https://github.com/dlenski/tetherback vem deste segmento. Os primeiros problemas com corrupção de dados descritos nos comentários abaixo foram todos resolvidos; O tetherback agora inclui verificações muito fortes contra a corrupção.

Dan
fonte
Primeiramente obrigado por fazer o programa. Parece estar funcionando bem, exceto sempre que eu uso o nandroid.py, os arquivos maiores, como system.img.gz e userdata.img.gz, falham ao descompactar o gzip. O "crc falha" e produz um arquivo img com aproximadamente 1/5 do tamanho do arquivo img.gz. No entanto, o bootloader.img.gz descompacta bem. É assim mesmo que você pode desativar o gzipping ou conhece outra maneira de corrigir o arquivo corrompido?
I'm_With_Stupid
1
@ I'm_With_Stupid, você pode desativar o gzipmodificando L46 , mas duvido que este seja realmente o problema. Você está executando Linux ou Windows? Infelizmente, no Windows, o adb manipula caracteres CRLF , o que significa que é impossível transmitir uma imagem binária através dela usando a técnica que estou usando. Posso escrever uma solução alternativa para isso, se necessário.
Dan
Além disso, se você puder fornecer mais detalhes, adicione-o como um novo problema no repositório do Github, pois facilita o controle!
Dan
1
Eu adicionei meus problemas como novos, então provavelmente devemos continuar nossa conversa .
I'm_With_Stupid
8

Um tópico sobre os desenvolvedores do XDA descreve como fazer um backup nandroid diretamente no seu computador sem usar o sdcard . Claro que só funciona em dispositivos enraizados. Outros requisitos incluem um sistema operacional Posix como Linux / MacOS (os usuários do Windows podem emular isso com o Cygwin) e o ADB (portanto, todo o SDK ou pelo menos uma instalação mínima ). Além disso, busyboxdeve estar disponível no dispositivo e a depuração USB ativada.

O artigo descreve passo a passo os comandos necessários para criar um backup Nandroid. Basicamente, ele está usando o dd por meio de um pipe nomeado para criar uma cópia em nível de bloco das partições do seu dispositivo - o que é basicamente um .

Izzy
fonte
2
Obrigado pelo ponteiro, @Hudayfah! Porém, embora as postagens somente para links possam teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência. Caso contrário, a resposta se tornará inútil caso o link morra. Atualizei sua postagem para mostrar como isso pode ser, para ajudá-lo em relação a postagens futuras (que você espera que sejam feitas :) :) Uma recepção calorosa à nossa comunidade!
Izzy
Além disso, como você restauraria esse backup, supondo que você só tenha acesso ao fastboot ou talvez adb em recuperação?
jiggunjer
por que deve estar enraizado?
user4951
2

Notei que (se você já possui o ADB configurado, seu telefone está enraizado e você está trabalhando em um sistema Linux ou similar), é possível despejar o conteúdo da partição por uma única linha:

adb pull /dev/block/mmcblk0

É o mesmo que é descrito no thread XDA para obter o conteúdo bit a bit da memória flash, exceto sem a dança com netcat e pipes (o que pode ser necessário ou não, dependendo das circunstâncias, eu acho). Obviamente, nenhuma partição na memória flash deve ser montada durante a cópia dos dados (por exemplo, fazê-lo a partir de uma recuperação e adb mountnão listar nenhuma partição montada); caso contrário, você arriscará um backup inconsistente em locais onde o Android decidiu gravar dados no hora do backup.

Observe que, para restaurar um simples:

pv mmcblk0 | adb shell dd of=/dev/block/mmcblk0

não funcionará, pois adb shellnão suporta tubulação. Mas se você, de alguma forma, pode fazer um dd of=/dev/block/mmcblk0no próprio dispositivo, suponho que ele deva restaurar seu backup. Não confie em mim, porém, isso também pode bloquear o seu telefone. Ainda não testei; até agora eu só precisava recuperar uma única partição e ddestava bem para isso.

liori
fonte
2
  1. Mostrar opções de desenvolvedor ( Settings > Developer> tap build 7 times)
  2. Ativar depuração USB ( Settings > Developer > USB Debugging)
  3. use a recuperação para evitar limitações de raiz do SO

    ./adb reboot recovery

  4. puxe

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

user1133275
fonte
Como eu restauraria esse backup?
Suma
@Suma com adb push (ou montar a img e copiar os arquivos de interesse para fora)
user1133275
O Android permitirá que você acesse facilmente todo o armazenamento interno?
Melab