Как вы можете указать произвольный начальный путь при добавлении файлов в tar?

10

Можно ли установить произвольный путь в архиве tar для размещения файлов, которые могут не существовать в вашей исходной файловой системе? Это отличается от ключа -C тем, что я могу сделать резервную копию / etc /, но поместить его в архив как / configurations / etc /.

andyortlieb
источник
1
IIRC это -sделает, но у меня нет времени, чтобы написать полный ответ прямо сейчас.
Крис С
@ChrisS В GNU tar 1.28 (Ubuntu 16.04) опция -sкоротка --preserve-orderи поэтому не по теме. здесь
Стефан Гурихон

Ответы:

7

В GNU tar --transform( --xform) - это опция для преобразования имени файла. Документацию и примеры можно найти здесь

Ciclamino
источник
Я бы видел это, если бы я читал man tar в моей системе, а не на linux.die.net !! Спасибо за ответ, регулярное выражение даже лучше, чем я надеялся.
andyortlieb
2
@andyorlieb, спасибо за ввод "--xform", который не работает в вашей системе, но, пожалуйста, не изменяйте содержание ответов людей, если у вас нет точной ссылки для его резервного копирования. Спасибо.
Крис С
-sна tar OSX выглядит аналогично
gman
Упомянутая документация слишком длинна, чтобы объяснить ее --transform=expressionво время извлечения , но ничего не говорит о времени добавления (что является фактическим заданным вопросом).
Стефан Гурихон
3

В BSD tar -s patternэто опция для преобразования имени. Цитирование из документации 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.
Патрик М
источник
1
Я знаю, что tar говорит, что речь идет именно о GNU tar, и Стефан заметил, что по сути не-gnu tar не по теме. Тем не менее, поскольку нет тега для BSD tar, я думаю, что это правильный ответ.
Патрик М,