Подтвердить что ты не робот

Как разбить путь во время архивации с помощью TAR

У меня есть файл, содержащий список файлов, которые я хочу архивировать с помощью tar. Позвольте называть его mylist.txt

Он содержит:

/path1/path2/file1.txt
/path1/path2/file3.txt
...
/path1/path2/file10.txt

Я хочу сделать это, чтобы архивировать этот файл в tarball, но исключая /path1/path2/. В настоящее время:

tar -cvf allfiles.tar -T mylist.txt

сохраняет путь после unarchiving.

Я пробовал это, но не буду работать:

tar -cvf -C /path1/path2 allfiles.tar -T mylist.txt

Он архивирует все файлы в /path1/path2 даже те, которые не находятся в mylist.txt

Есть ли способ сделать это?

4b9b3361

Ответ 1

В вашей "фазе экстракции" вы можете использовать флаг strip-components, например

tar xvf tarname.tar --strip-components=n

который удалит первые n ведущих компонентов имени файла. Хотя, если у вас разные компоненты пути к файлу, это не будет работать для всех случаев.

Если вы хотите сделать это во время архивации, на ум приходит только одна вещь, и я поделюсь

INPUT: список файлов + полные пути

1) для каждой строки, разделите путь из имени файла

2) выполните cd к этому пути и tar в этом имени файла

3) повторить для каждой строки