Linux tar: только - преобразовать определенные файлы

Я пишу сценарий bash, который упаковывает мое приложение в файл TAR. Файлы не расположены на диске так, как они должны быть расположены в файле TAR, поэтому я решил использовать опцию --transform.

Однако, похоже, что команда --transform применяется глобально, а не к файлам, включенным после.

Пример:

tar \
--exclude='webmanager/bin/dev' \
--exclude='webmanager/.config.ini' \
--show-transformed-names \
--create --gzip --verbose \
--file 'output.tgz' \
-C '../../../' \
'include' \
'resources' \
'webmanager' \
'rootconfig.php' \
-C 'webmanager/bin/dev' \
'index.php' \
'README.md' \
--transform='s|^|webmanager/|r' \
'.config.ini'

По сути, этот код берет файл из webmanager/bin/dev/.config.ini и помещает это в webmanager/.config.ini в файле TAR. Но я хочу только преобразовать файл.config.ini. В настоящее время все содержимое преобразуется с префиксом webmanager/, Я надеялся, что эта команда ведет себя как -C (изменить текущий каталог) - где он влияет только на входы после него.

Я просмотрел справочные страницы TAR и не могу понять, как это сделать правильно. Пожалуйста помоги!

1 ответ

Кажется --transform опция работает на всех файлах действительно. Кстати, я нашел эту страницу о tar это может помочь вам как-то.

Если можно, я бы предложил вам другой подход: выложите нужные файлы во временный каталог (cp команда сделает), измените ваш.config.in с помощью sed и чем пользоваться tar упаковать все. Вы можете создать скрипт даже Makefile, если вы знакомы с make,

Другие вопросы по тегам