Как разбить путь во время архивации с помощью 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
Есть ли способ сделать это?
Ответы
Ответ 1
В вашей "фазе экстракции" вы можете использовать флаг strip-components
, например
tar xvf tarname.tar --strip-components=n
который удалит первые n ведущих компонентов имени файла. Хотя, если у вас разные компоненты пути к файлу, это не будет работать для всех случаев.
Если вы хотите сделать это во время архивации, на ум приходит только одна вещь, и я поделюсь
INPUT: список файлов + полные пути
1) для каждой строки, разделите путь из имени файла
2) выполните cd к этому пути и tar в этом имени файла
3) повторить для каждой строки