¿Cómo se puede designar una ruta principal arbitraria al agregar archivos a un tar?

10

¿Es posible establecer una ruta arbitraria dentro de un archivo tar para colocar archivos que pueden no existir en su sistema de archivos original? Esto difiere del modificador -C en que es posible que desee realizar una copia de seguridad de / etc /, pero colocarlo en el archivo como / configuraciones / etc /.

andyortlieb
fuente
1
IIRC la -sopción hace eso, pero no tengo tiempo para escribir una respuesta completa en este momento.
Chris S
@ChrisS En GNU tar 1.28 (Ubuntu 16.04) la opción -ses la abreviatura --preserve-ordery, por lo tanto, está fuera de tema. aquí
Stéphane Gourichon

Respuestas:

7

En GNU tar, --transform( --xform) es la opción para realizar transformaciones de nombre de archivo. Puede encontrar documentación y ejemplos aquí.

Ciclamino
fuente
¡Habría visto esto si hubiera leído man tar en mi sistema en lugar de en linux.die.net! Gracias por la respuesta, regex es incluso mejor de lo que esperaba.
andyortlieb
2
@andyorlieb, gracias por la entrada en "--xform" que no funciona en su sistema, pero no cambie el contenido de las respuestas de las personas a menos que tenga una referencia definitiva para respaldarlo. Gracias.
Chris S
-sde alquitrán de OSX es similar
gman
La documentación mencionada hace todo lo posible para explicar --transform=expressionen el momento de la extracción , pero no dice nada sobre agregar tiempo (que es la pregunta real).
Stéphane Gourichon
3

En BSD tar, -s patternes la opción para realizar transformaciones de nombre. Citando la documentación de freebsd.org :

-s  pattern
     Modify file or archive member names according to pattern.  The
     pattern has the format /old/new/[ghHprRsS] where old is a basic
     regular expression, new is the replacement string of the matched
     part, and the optional trailing letters modify how the replace-
     ment is handled.  If old is not matched, the pattern is skipped.
     Within new, ~ is substituted with the match, \1 to \9 with the
     content of the corresponding captured group.  The optional trail-
     ing g specifies that matching should continue after the matched
     part and stop on the first unmatched pattern.  The optional
     trailing s specifies that the pattern applies to the value of
     symbolic links.  The optional trailing p specifies that after a
     successful substitution the original path name and the new path
     name should be printed to standard error.  Optional trailing H,
     R, or S characters suppress substitutions for hardlink targets,
     regular filenames, or symlink targets, respectively.  Optional
     trailing h, r, or s characters enable substitutions for hardlink
     targets, regular filenames, or symlink targets, respectively.
     The default is hrs which applies substitutions to all names.  In
     particular, it is never necessary to specify h, r, or s.
Patrick M
fuente
1
Sé que el alquitrán dice que se trata específicamente del alquitrán GNU, y Stéphane comentó que esencialmente el alquitrán no gnu está fuera de tema. Sin embargo, como no hay una etiqueta para el alquitrán BSD, creo que esta es una respuesta adecuada.
Patrick M