Tar.gz no funciona (fallo de segmentación) en la partición ext4

Tengo un problema extraño con la compresión tar gz.

Solía ​​tener una tarjeta SD montada como una partición fat32. Sin embargo, ahora lo cambié para que la tarjeta SD externa se monte en /data/media/0 y esté formateada en ext4 (o f2fs; no hay diferencia, porque este error ocurre en cualquiera de los dos).

En la configuración anterior, podía ejecutar

tar cvzf

en una carpeta en esta partición sin ningún problema.

Sin embargo, en esta nueva configuración, si la ejecuto, obtengo

tar cvzf
Segmentation fault.

Descubrí que si elimino el parámetro z, funciona bien. Pero el archivo tar resultante no está comprimido con gz y, por lo tanto, no es apto para mis aplicaciones.

Confirmé este comportamiento en dos ROM diferentes hasta ahora: CarbonRom JB 4.3.1 y CarbonRom KK 4.4.4.

¿Alguien tiene alguna idea de lo que podría estar mal aquí? ¿Android no puede almacenar archivos tar.gz en particiones que no sean fat32, o se debe a algún otro problema?

¿ De dónde es tu tarbinario? Probablemente la biblioteca zlib no se compiló correctamente o falta.
De la propia rom. Como dije, el comando TAR funciona bien cuando se usa en una carpeta en una partición fat32 montada en /storage/sdcard1. El mismo binario y sistema TAR presenta este problema cuando intenta realizar exactamente la misma operación en la partición ext4 montada en /data/media/0.

Respuestas (1)

Todavía no tengo idea de qué está causando el problema, pero encontré una solución que hace lo mismo.

En lugar de llamar directamente a gzip desde tar así:

tar cvzf

Canalizo la salida de tar a gzip así:

tar -cv directory/ | gzip > archive.tar.gz

y la falla de segmentación ya no existe.