Как изменить имя файла, когда Вы добавляете файл в файл tar

Я создаю файл tar путем запущения скрипта. Сценарий находится в папке A. Я хочу добавить файл в tar. Входной файл и файл tar оба находятся в папке B. Когда я добавляю файл к существующему tar, я имею, дают абсолютный путь к файлу, как это находится в другой папке и когда ее попытка добавить в tar, в который он должен быть переименован к имени, которое я хочу.

Пример:

  • Местоположение сценария: /root/test/A
  • Расположение файла я хочу добавить в tar: /root/myFolder/B/foo
  • Расположение файла tar: /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.

2
задан 21 February 2018 в 18:33

1 ответ

Причиной является tar автоматическое удаление ведущего /:

tar: Удаление начального `/ 'из имен элементов

Кажется, оно удалено до выполнения регулярного выражения. Поэтому вам также необходимо удалить начальный / в шаблоне:

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
3
ответ дан 2 December 2019 в 02:44

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

Похожие вопросы: