es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo generar un archivo PAX Tar con una entrada inicial de Atributos Extendidos Globales (‘g’)?

En Linux, estoy tratando de generar un archivo PAX no comprimido que contenga una entrada de Atributos Extendidos Globales utilizando alguno de los siguientes comandos:

A) Especificando las opciones pax (implica –xattrs):

tar cvf archivo.tar carpeta/* –xattrs –pax-option=gname:=MyGroup,uname:=MyUser

B) Especificando el soporte de atributos extendidos (implica –format=pax):

tar cvf archivo.tar carpeta/* –format=pax –pax-option=gname:=MyGroup,uname:=MyUser

Ambos comandos generan un archivo exitosamente, pero cuando abro el archivo con mi editor hexadecimal, la primera entrada tiene el tipo ‘x’ en lugar del tipo ‘g’ esperado.

¿Qué estoy haciendo mal?

Entorno:
– Ubuntu 20.04 ARM64
– Versión de la herramienta ‘tar’: GNU tar 1.30

Más información

El manual de la herramienta ‘tar’ especifica que ‘–pax-option’ y ‘–xattrs’ son los argumentos para manipular atributos extendidos, pero no menciona nada acerca de crear una entrada de atributo extendido global.

Si lo entendí correctamente, la especificación de Tar indica que el formato PAX admite dos tipos especiales de entradas:

Tipo ‘x’
Entrada de atributos extendidos. Esta es una entrada que precede a la entrada real del sistema de archivos que describe. Permite al usuario especificar cualquier número de atributos en la sección de datos, utilizando cadenas UTF8, en el formato ‘BYTES NAME=VALUE\n’.

Tipo ‘g’
Entrada de atributos extendidos globales. Tiene las mismas características que la entrada ‘x’, pero con la diferencia de que solo hay una de este tipo: esta entrada se encuentra en la posición 0 del archivo y describe atributos que se aplican al resto de las entradas.

Fuentes:
– https://man7.org/linux/man-pages/man1/tar.1.html
– https://www.gnu.org/software/tar/manual/html_node/PAX-keywords.html
– https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que ambos comandos están generando una entrada de Atributos Extendidos en lugar de una entrada de Atributos Extendidos Globales.

    Para crear una entrada de Atributos Extendidos Globales, necesitas agregar la opción --pax-option=hdrcharset=utf-8,exthdrcharset=utf-8,glob a tu comando, de esta manera:

    tar cvf file.tar folder/* --xattrs --pax-option=hdrcharset=utf-8,exthdrcharset=utf-8,glob,gname:=MiGrupo,uname:=MiUsuario
    

    Esto establecerá el conjunto de caracteres del encabezado y del encabezado extendido en UTF-8 y creará una entrada de Atributos Extendidos Globales con los nombres de grupo y usuario especificados. Abrir el archivo resultante con un editor hexadecimal debería mostrar un tipo de entrada de g para la primera entrada.

    Asegúrate de consultar las fuentes proporcionadas para obtener más información sobre el comando tar y el formato PAX.

Comments are closed.