Я создаю файл tar путем запущения скрипта. Сценарий находится в папке A. Я хочу добавить файл в tar. Входной файл и файл tar оба находятся в папке B. Когда я добавляю файл к существующему tar, я имею, дают абсолютный путь к файлу, как это находится в другой папке и когда ее попытка добавить в tar, в который он должен быть переименован к имени, которое я хочу.
Пример:
/root/test/A
/root/myFolder/B/foo
/root/myFolder/B/archive.tar
При добавлении /root/myFolder/B/foo
кому: archive.tar
это должно быть переименовано к bar
.
Я пробую эту команду, но никакой успех:
tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
Это добавляет файл, как это с тем же именем /root/myFolder/B/foo
.
Причиной является tar
автоматическое удаление ведущего /
:
tar: Удаление начального `/ 'из имен элементов
blockquote>Кажется, оно удалено до выполнения регулярного выражения. Поэтому вам также необходимо удалить начальный
/
в шаблоне:tar --transform='flags=r;s|root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
или использовать переключатель
-P
-P, --absolute-names don't strip leading '/'s from file names
В качестве альтернативы вы можете переключиться в папку files с помощью
-C
, тогда вам не нужно заменять путь:tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo