Componga y canalice un archivo tar comprimido con gzip de una sola vez

Componga y canalice un archivo tar comprimido con gzip de una sola vez

Estoy tratando de encontrar una manera efectiva de crear un archivo comprimido con gzip de varias particiones del sistema en Android, canalizando todo a la salida estándar para poder cifrarlo cuando aparece a través de gpg.

El flujo de trabajo se ve así:

adb shell "/data/dobackup.sh" | gpg --output suchbackup.tar.gz.gpg --encrypt --sign --recipient [email protected]

El script de shell básicamente necesita hacer esto:

cat /dev/block/platform/msm_sdcc.1/by-name/recovery > recovery.img
cat /dev/block/platform/msm_sdcc.1/by-name/system > system.img
...

Sin embargo, como se ve, me gustaría hacer todo esto a través de una ejecución de adb Shell para que todo se transfiera a través de USB, a la memoria, y rápidamente se cifre y luego se escriba en el disco, es decir, sin dejar rastro sin cifrar.

El problema que tengo es que no estoy seguro de cómo fabricar las partes internas del script en un archivo tar.gz compuesto de múltiples archivos/fuentes. Básicamente, estoy buscando generar un archivo tar.gz desde la salida estándar de este script que incluye los siguientes archivos en su interior:

/recovery.img
/system.img
/userdata.img
/cache.img
/...

¿Hay alguna manera de que pueda hacer esto? Hasta ahora no he encontrado un problema como este en mis viajes.

Respuesta1

Suponiendo que quiere decir que desea usar tar para crear un archivo y enviarlo a la salida estándar, eso es lo que sucede de forma predeterminada si no usa la fopción para enviar la salida a un archivo:

tar cz /{recovery,system,userdata,cache}.img | ...

Si el problema es archivar "archivos" que en realidad no existen en el sistema de archivos, eso es un poco más complicado debido al formato de los archivos tar: cada archivo esprecedidopor un encabezado que incluye el tamaño del archivo. El tamaño del tamaño del encabezado debe ser correcto porque es la única forma de tarsaber dónde comienza la siguiente entrada del encabezado.

Por lo tanto, sólo es posible hacer esto si se puede predecir con precisión el tamaño del objeto de archivo generado. Si puede hacer eso, debería poder construir un archivo tar usando, por ejemplo, la biblioteca estándar de Python.archivo tarmódulo.

Respuesta2

Un hilo en el que quizás quieras revisarHak5los foros mostrarán el camino hacia un proyecto en el que se está trabajando y que hace uso de mkfifootras magias de Bash... Descubrí que una vez configurado facilita el cifrado de casi cualquier cosa y hay herramientas para el descifrado masivo.

El profesor está en el pudín así queTravis-CIse utiliza actualmente para mostrar todas las funciones de trabajo, incluida la recuperación de cadenas de prueba, archivos y directorios. Esto se ha probado en Android con Busybox y chroot Linux, pero es posible que solo necesites togetherbox (si la rotación de salida al correo electrónico está deshabilitada) porque la mayor parte del código fuente está diseñado para sistemas limitados.

Una sugerencia tarespecífica: consulte los registros de compilación de los últimos días y descubrirá que puede ser unTirón del peloexperiencia si te olvidas de poner el final -o meterte con él vpara probarlo.

información relacionada