0 votos

¿Es posible restaurar la copia de seguridad de la partición de datos en un teléfono Android sobre la marcha con sólo adb shell?

adb shell dd if=/dev/block/mmcblk0p7 > backup.bin

funciona para hacer una copia de seguridad de la partición del teléfono Android al ordenador, pero cuando quiero restaurar usando

cat backup.bin | adb shell dd of=/dev/block/mmcblk0p7

no funcionó. el shell sigue esperando la entrada en lugar de escribir en el objetivo inmediatamente que esperaba.

¿Hay algún problema con el comando?

¿Es posible catar un archivo a un teléfono Android con sólo adb shell y comandos internos sobre la marcha (sin empujar el archivo de copia de seguridad al teléfono primero)?


He encontrado algo más problema adb shell hace. (el extra 0x0D) https://stackoverflow.com/questions/11689511/transferring-binary-data-over-adb-shell-ie-fast-file-transfer-using-tar

Parece que el comando adb shell traduce LF a CRLF:

Así que adb shell cat a la computadora local parece no ser tan bueno. Pero todavía quiero saber cómo cat directamente a shell remoto.

La solución push to sdcard no es aplicable mientras se restaura la partición de datos en un teléfono sin soporte de almacenamiento externo.

2voto

cybersans Puntos 41

Esto funcionará en un linux:

adb shell dd if=/dev/block/mmcblk0p7|sed 's/\r$//' > backup.bin

En MacOS también se puede hacer funcionar, sólo hay que hacerlo con Perl:

adb shell dd if=/dev/block/mmcblk0p7|perl -pe 's/\x0D\x0A/\x0A/g' > backup.bin

1voto

Izzy Puntos 45544

Suponiendo que el archivo se encuentra en tu ordenador, pero quieres restaurarlo en tu dispositivo:

adb push /usr/local/backup/backup.bin /sdcard/backup.bin
adb shell dd if=/sdcard/backup.bin of=/dev/block/mmcblk0p7

debe al truco. Explicación: El primer comando copia el backup.bin a su tarjeta SD, y en la segunda línea dd lo lee desde allí y luego lo escribe en el dispositivo especificado. Es posible que desee combinar esto a una sola línea:

adb push /usr/local/backup/backup.bin /sdcard/backup.bin && adb shell dd if=/sdcard/backup.bin of=/dev/block/mmcblk0p7

Esto significa: "Copiar el archivo en el dispositivo, y ejecutar dd sólo cuando el proceso de copia tuvo éxito".

Para responder a la otra parte de tu pregunta (qué le pasa a tu mando): Usted cat el archivo en el local adb proceso en su ordenador, no en el remoto dd en su dispositivo. adb no sabe cómo "entregarlo". Entonces, ¿por qué funciona al revés? Porque allí se captura la salida que se muestra en el ordenador local, que por supuesto se puede redirigir localmente.

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