¿Hay alguna manera de hacer una copia de seguridad de Nandroid directamente en la PC y luego restaurarla directamente desde la PC también?

22

Mi teléfono no tiene suficiente espacio para almacenar archivos de copia de seguridad, así que me pregunto si hay una manera de hacer copias de seguridad y restaurar Nandroid con archivos almacenados en la PC.

JatSing
fuente
1
Dudo que haya alguna forma de hacer esto. Debe intentar hacer una copia de seguridad en una tarjeta SD externa y luego transferirla a la computadora. O simplemente mueva suficientes archivos a su computadora para que pueda crear y restaurar la copia de seguridad en su teléfono y luego mover los archivos cuando haya terminado.
VarnerBeast14

Respuestas:

14

He escrito algunas herramientas exactamente para este propósito, debido a frustraciones similares: https://github.com/dlenski/tetherback

Estas herramientas están escritas en Python y se utilizan adbpara crear copias de seguridad de estilo nandroid (imágenes de partición sin dd if=/dev/block/mmcblk0pXXformato de ) o copias de seguridad de estilo TWRP (mezcla de imágenes de partición sin formato y tarballs para ext4particiones).

Intentan sondear el diseño de partición correcto y muestran el progreso de la copia de seguridad:

$ ./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 es un trabajo en progreso: ¡los comentarios son muy bienvenidos!

Requisitos:

  • Python 3.3+ bajo Linux / OSX / Windows.
    • progressbarSe necesita el paquete ( pip install progressbardebería hacerlo)
  • adb (Android Debug Bridge) herramientas de línea de comandos
  • Dispositivo Android rooteado con recuperación TWRP instalada.
    • El requisito de un dispositivo rooteado y una recuperación personalizada nunca desaparecerá : si no tiene acceso a la raíz, entonces no tiene medios para copiar todo el contenido de la memoria de su dispositivo, así de simple.

EDITAR: Parece que la mayor parte del tráfico a https://github.com/dlenski/tetherback proviene de este hilo. Los primeros problemas con la corrupción de datos descritos en los comentarios a continuación se han resuelto; tetherback ahora incluye controles muy fuertes contra la corrupción.

Dan
fuente
En primer lugar, gracias por hacer el programa. Parece estar funcionando bien, excepto cuando uso nandroid.py, los archivos más grandes, como system.img.gz y userdata.img.gz, fallan al descomprimir el gzip. El "crc falla" y produce un archivo img aproximadamente 1/5 del tamaño del archivo img.gz. Sin embargo, el bootloader.img.gz se descomprime bien. ¿De todos modos, podría deshabilitar el gzipping o conoce otra forma de reparar el archivo dañado?
I'm_With_Stupid
1
@ I'm_With_Stupid, puede desactivar la gzipmodificación de L46 , pero dudo que este sea realmente el problema. ¿Estás ejecutando Linux o Windows? Desafortunadamente, bajo Windows, adb manipula los caracteres CRLF , lo que significa que es imposible transmitir una imagen binaria a través de ella usando la técnica que estoy usando. Puedo escribir una solución para esto si es necesario.
Dan
Además, si puede proporcionar más detalles, agréguelo como un nuevo número en el repositorio de Github porque hace que sea más fácil realizar un seguimiento.
Dan
1
Agregué mis problemas como problemas nuevos, por lo que probablemente deberíamos continuar nuestra conversación allí .
I'm_With_Stupid
8

Un hilo sobre los desarrolladores de XDA describe cómo hacer una copia de seguridad de nandroid directamente en su computadora sin usar sdcard . Por supuesto, solo funciona en dispositivos rooteados. Los requisitos adicionales incluyen un sistema operativo Posix como Linux / MacOS (los usuarios de Windows pueden emular esto con Cygwin) y ADB (o bien todo el SDK, o al menos una instalación mínima ). Además, busyboxdebe estar disponible en el dispositivo y la depuración USB activada.

El artículo describe paso a paso los comandos necesarios para crear una copia de seguridad de Nandroid. Básicamente, está usando dd a través de una tubería con nombre para crear una copia a nivel de bloque de las particiones de su dispositivo, lo que básicamente es una .

Izzy
fuente
2
Gracias por el puntero, @Hudayfah! Pero si bien las publicaciones de solo enlace pueden responder teóricamente a la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. De lo contrario, la respuesta se vuelve inútil en caso de que el enlace muera. Actualicé su publicación en consecuencia para mostrar cómo se puede ver eso, para ayudarlo con respecto a publicaciones futuras (que con suerte hará :) :) ¡Una cálida bienvenida a nuestra comunidad incluida!
Izzy
Además, ¿cómo haría para restaurar esta copia de seguridad, suponiendo que solo tenga acceso a fastboot o tal vez a adb en la recuperación?
jiggunjer
¿Por qué debe ser enraizado?
user4951
2

Me di cuenta de que (si ya tiene ADB configurado, su teléfono está rooteado y está trabajando en un sistema Linux o similar) es posible volcar el contenido de la partición por una sola línea:

adb pull /dev/block/mmcblk0

Esto es lo mismo que se describe en el hilo XDA para obtener el contenido bit por bit de la memoria flash, excepto sin el baile con netcat y tuberías (que podría ser necesario o no dependiendo de las circunstancias, supongo). Obviamente, no se debe montar ninguna partición en la memoria flash mientras se copian los datos (es decir, hacerlo desde una recuperación mientras adb mountno se enumeran las particiones montadas), de lo contrario, correrá el riesgo de una copia de seguridad inconsistente en lugares en los que Android decidió escribir datos en el tiempo de respaldo.

Tenga en cuenta que para restaurar un simple:

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

no funcionará, ya adb shellque no admite tuberías. Pero si de alguna manera puede hacer un dd of=/dev/block/mmcblk0en el dispositivo en sí, supongo que debería restaurar su copia de seguridad. Sin embargo, no confíes en mí en esto, también podría bloquear tu teléfono. No lo he probado todavía; Hasta ahora solo necesitaba recuperar una sola partición y ddestaba bien para eso.

liori
fuente
2
  1. Mostrar opciones de desarrollador ( Settings > Developer> tap build 7 times)
  2. Habilitar depuración USB ( Settings > Developer > USB Debugging)
  3. usar la recuperación para evitar las limitaciones de la raíz del sistema operativo

    ./adb reboot recovery

  4. hacer el tirón

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

usuario1133275
fuente
¿Cómo restablecería dicha copia de seguridad?
Suma
@Suma con adb push (o montar el img y copiar los archivos de interés)
user1133275
¿Android te permitirá acceder fácilmente a la totalidad del almacenamiento interno?
Melab