5 votos

¿Es esta la forma correcta de utilizar dd para una copia de seguridad completa?

Lamentablemente mi dispositivo (sm-g3185) no es compatible con ninguno de los CWM o NANDbackup así que estoy tratando de hacer una copia de seguridad manualmente. He encontrado este hilo que me dice que abra un terminal (estoy en Arch Linux) y lo ejecute:

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

Y luego otra terminal y a correr:

adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

He hecho todo esto y parece que funciona. Sin embargo, hubo un retraso de unos segundos entre el lanzamiento del dd en el terminal1 y el comando nc en el terminal2.

¿Puedo confiar en la copia de seguridad que he creado de esta manera? ¿No significa esto que he perdido parte de la salida de dd ? ¿No deberían ejecutarse simultáneamente o, al menos, no debería el nc comando se inicie antes de el dd ¿uno?

4voto

cedrou Puntos 1709

¿Puedo confiar en la copia de seguridad que he creado de esta manera?

Sí, puedes: es la copia de seguridad más completa que puedes hacer de tu dispositivo.

La integridad de los datos copiados puede comprobarse fácilmente ejecutando md5sum en el dispositivo ( /dev/block/mmcblk0 ) y comparando su resultado con el MD5 del archivo respaldado ( mmcblk0.raw ).

Si quieres listar las particiones dentro de la copia de seguridad, puedes ejecutar parted /path/backup/mmcblk0.raw print en el ordenador central. En su interior, encontrará su system y userdata particiones y montones de particiones ocultas que contienen bootloader[s], configuración de banda base y datos de recuperación entre otras muchas cosas...

Hubo un retraso de unos segundos entre el lanzamiento del dd en el dispositivo y el nc en el ordenador central. ¿No significa esto que he perdido parte de la salida de dd ?

No, no tienes que preocuparte. Cuando se ejecuta nc -l , escuchará una conexión entrante. Mientras tanto, bloqueará la tubería y mantendrá dd de enviar datos. Esto significa que el primer byte será enviado por dd una vez que establezcas la conexión desde el otro lado.

¿No deberían ejecutarse simultáneamente o, al menos, no debería el nc se inicie antes del dd ¿uno?

No necesariamente. Como se ha dicho en el párrafo anterior, no hay que preocuparse por eso. dd sólo comenzará a enviar los datos una vez que el nc que se ejecuta en el dispositivo recibe la conexión de entrada del nc que se ejecuta en el host y lee los datos de la tubería.


Nota: no es necesario ejecutar adb forward tcp:5555 tcp:5555 dos veces.

1voto

terdon Puntos 118

Lo dejé correr y cuando terminó, dd informados:

7818182656 bytes (7.3GB) copied, 1245.237601 seconds, 6.0MB/s

Y ls -l mmcblk0.raw en mi ordenador muestra:

-rw-r--r-- 1 terdon terdon 7818182656 Nov 10 14:45 mmcblk0.raw

Dado que el archivo tiene el tamaño adecuado, es de suponer que la copia de seguridad se realizó con éxito.

0 votos

Todavía estoy interesado en una respuesta que explique por qué que funcionó, así que no aceptaré esto por un tiempo. ¿Hay algún tipo de amortiguación aquí? ¿Cómo funciona exactamente?

0 votos

¿es el .raw lo mismo que un .img?

0 votos

@Alexis sí, la extensión es irrelevante, simplemente elegí .raw.

1voto

Paul Holder Puntos 66

Esta es la salida de busybox nc -h del Kindle Fire HDX en el que estoy trabajando:

BusyBox v1.20.2 (2013-01-21 11:34:41 CET) multi-call binary.

Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]

Open a pipe to IP:PORT or FILE

        -e PROG Run PROG after connect
        -l      Listen mode, for inbound connects
                (use -l twice with -e for persistent server)
        -p PORT Local port
        -w SEC  Timeout for connect
        -i SEC  Delay interval for lines sent
        -f FILE Use file (ala /dev/ttyS0) instead of network

Así, se recibe la imagen completa porque netcat espera a que se establezca la conexión antes de ejecutar busybox dd if=/dev/block/mmcblk0 , dicha conexión se establece mediante nc 127.0.0.1 5555 en la segunda ventana del terminal.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X