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
,