macOS a Linux: Problemas al descomprimir archivos tar.gz

Fuentes: Tar Files Created on macOS Display Errors When Extracting on Linux

Este artículo aborda un problema común que surge al compartir archivos comprimidos (tar.gz o tgz) creados en macOS con sistemas Linux (Debian, Ubuntu, Red Hat). Cuando se descomprime un archivo tar.gz creado en macOS en un servidor Linux, a menudo se observan errores o advertencias relacionadas con archivos adicionales y desconocidos, como ._IMG_XXXX.jpeg o mensajes de advertencia sobre 'LIBARCHIVE.xattr.com.apple.quarantine'.

La causa principal de este problema radica en que la versión de tar predeterminada en macOS (bsdtar) incluye metadatos extendidos específicos de macOS (atributos extendidos o 'xattrs') al crear el archivo. Estos metadatos, como información sobre la última fecha de uso, el estado de cuarentena (para seguridad) o metadatos de texto, no son compatibles ni necesarios en sistemas Linux y pueden causar problemas durante la extracción.

El artículo presenta tres soluciones para evitar este problema. La primera y más sencilla es utilizar la opción --no-xattrs al crear el archivo tar en macOS: tar -cvzf --no-xattrs pix.tar.gz pix. Esto instruye a tar para que no incluya los atributos extendidos. La segunda opción es usar --disable-copyfile con el mismo efecto. La tercera solución, más permanente, implica instalar la versión GNU de tar (gnu-tar) a través de Homebrew y configurarla como la versión predeterminada de tar en tu sistema macOS. Esto se logra modificando el archivo ~/.bash_profile para que el directorio de gnu-tar aparezca antes del directorio de bsdtar en la variable PATH. La instalación de gnu-tar requiere una instalación de Homebrew y una modificación de la variable PATH dependiendo de si se usa un Mac con procesador Intel o Apple Silicon.

En resumen, el artículo proporciona una guía práctica para solucionar un problema de compatibilidad al compartir archivos tar.gz entre macOS y Linux, ofreciendo soluciones tanto rápidas como permanentes para evitar la inclusión de metadatos no deseados.