Назад | Перейти на главную страницу

Tar-архив Linux без родительской структуры

Я пытаюсь модифицировать определенный архив tar.gz, который у меня есть. Когда я перехожу к созданию tar, он сохраняет структуру родительских каталогов, как и должен быть tarball. Однако есть ли способ просто создать tar-архив только с указанными мной файлами, а не со всем деревом каталогов?

Отключение рекурсии в деготь.

POSIX человек(1) имеет -d опция, которая включает cpio-подобный интерфейс, позволяя создавать .tar файлы. Пример из Википедии:

find . -depth -print | pax -wd > archive.tar

GNU деготь(1) имеет аналогичный вариант, - без рекурсии. Пример оттуда:

find dir tests | tar -cf archive -T - --no-recursion

P.S. Я обычно возвращаюсь к cpio(1) в таких случаях.

Немного грязно, но да:

michael@choad:~$ tar cf - -C ~/scratch packing_slip_411.pdf -C ~/bin/df_linux/ README.linux | tar tvf -
-rw-r--r-- michael/users 37686 2012-03-30 15:09 packing_slip_411.pdf
-rwx------ michael/users  1364 2012-03-30 07:27 README.linux

Если указать полный путь к файлу, дерево будет сохранено:

tar cf newarchive.tar /path/to/file1 /path/to/file2

Чтобы опустить файловую структуру, перейдите в каталог и создайте архив:

(cd /path/to && tar cf /tmp/newarchive.tar file1 file2)