Я пытаюсь модифицировать определенный архив 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)