Comment pouvez-vous désigner un chemin d'accès arbitraire lors de l'ajout de fichiers à un tar?

10

Est-il possible de définir un chemin arbitraire dans une archive tar pour placer des fichiers qui peuvent ne pas exister sur votre système de fichiers d'origine? Cela diffère du commutateur -C en ce que je peux vouloir prendre une sauvegarde de / etc /, mais le placer dans l'archive sous / configurations / etc /.

andyortlieb
la source
1
L'IIRC a cette -soption, mais n'a pas le temps de rédiger une réponse complète pour le moment.
Chris S
@ChrisS Dans GNU tar 1.28 (Ubuntu 16.04), l'option -sest courte --preserve-orderet donc hors sujet. ici
Stéphane Gourichon

Réponses:

7

Dans GNU tar, --transform( --xform) est l'option pour effectuer des transformations de nom de fichier. La documentation et des exemples peuvent être trouvés ici

Ciclamino
la source
J'aurais vu cela si j'avais lu man tar sur mon système plutôt que sur linux.die.net !! Merci pour la réponse, regex est encore meilleur que ce que j'espérais.
andyortlieb
2
@andyorlieb, merci pour l'entrée sur "--xform" ne fonctionnant pas sur votre système, mais veuillez ne pas changer le contenu des réponses des gens à moins d'avoir une référence définitive pour la sauvegarder. Je vous remercie.
Chris S
-ssur le goudron d'OSX semble similaire
gman
La documentation mentionnée est très longue à expliquer --transform=expressionau moment de l' extraction , mais ne dit rien sur l' ajout de temps (qui est la vraie question posée).
Stéphane Gourichon
3

Dans tar BSD, -s patternest la possibilité de faire des transformations de nom. Citant de la documentation 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
la source
1
Je sais que le goudron dit qu'il s'agit spécifiquement du goudron GNU, et Stéphane a commenté que le goudron non-gnu est hors sujet. Cependant, comme il n'y a pas de balise pour le tar BSD, je pense que c'est une réponse appropriée.
Patrick M