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.
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.
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:
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.
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 lá .
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 backup nandroid .
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.
Respostas:
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
adb
para criar backups no estilo nandroid (imagens de partições brutas dedd if=/dev/block/mmcblk0pXX
) ou backups no estilo TWRP (mistura de imagens de partições brutas e tarballs paraext4
partições).Eles tentam analisar o layout de partição correto e mostram o progresso do backup:
Este é um trabalho em andamento - o feedback é muito bem-vindo!
Requisitos:
progressbar
pacote é necessário (pip install progressbar
deve fazê-lo)adb
Ferramentas de linha de comando (Android Debug Bridge)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.
fonte
gzip
modificando 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.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,
busybox
deve 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 backup nandroid .
fonte
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:
É 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 mount
nã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:
não funcionará, pois
adb shell
não suporta tubulação. Mas se você, de alguma forma, pode fazer umdd of=/dev/block/mmcblk0
no 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 edd
estava bem para isso.fonte
Settings > Developer> tap build 7 times
)Settings > Developer > USB Debugging
)use a recuperação para evitar limitações de raiz do SO
./adb reboot recovery
puxe
./adb pull /dev/block/mmcblk0 mmcblk0.img
fonte