Jak wyznaczyć dowolną ścieżkę wiodącą podczas dodawania plików do tar?

10

Czy można ustawić dowolną ścieżkę w archiwum tar, aby umieścić pliki, które mogą nie istnieć w oryginalnym systemie plików? Różni się to od przełącznika -C tym, że mógłbym chcieć wykonać kopię zapasową / etc /, ale umieść ją w archiwum jako / configurations / etc /.

andyortlieb
źródło
1
IIRC -sopcja to robi, ale nie mam teraz czasu na napisanie całej odpowiedzi.
Chris S
@ChrisS W GNU tar 1.28 (Ubuntu 16.04) opcja -sjest skrótowa, --preserve-ordera zatem nie na temat. tutaj
Stéphane Gourichon

Odpowiedzi:

7

W GNU tar --transform( --xform) jest opcją do transformacji nazw plików. Dokumentacja i przykłady można znaleźć tutaj

Ciclamino
źródło
Widziałbym to, gdybym przeczytał man tar w moim systemie zamiast na linux.die.net !! Dzięki za odpowiedź, wyrażenie regularne jest nawet lepsze niż się spodziewałem.
andyortlieb,
2
@andyorlieb, dziękuję za wpis w „--xform”, który nie działa w twoim systemie, ale proszę nie zmieniaj treści odpowiedzi ludzi, chyba że masz definitywne odniesienie do utworzenia kopii zapasowej. Dziękuję Ci.
Chris S
-sna tarie OSX wygląda podobnie
gman
Wspomniana dokumentacja jest bardzo długa do wyjaśnienia --transform=expressionpodczas wyodrębniania , ale nie mówi nic o dodawaniu czasu (co jest faktycznie zadawanym pytaniem).
Stéphane Gourichon
3

W BSD tar -s patternistnieje możliwość dokonywania przekształceń nazw. Cytując FreeBSD.org dokumentacji :

-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.
źródło
1
Wiem, że smoła mówi, że dotyczy w szczególności smoły GNU, a Stéphane skomentował, że w zasadzie smoła inna niż GNU jest nie na temat. Ponieważ jednak nie ma tagu dla tar BSD, myślę, że jest to odpowiednia odpowiedź.
Patrick M