Есть ли способ выполниться
tar cjvf foo.tar.bz2 project-root
Таким образом, что, когда tarball извлечен, это не извлекает к корню проекта, но вместо этого извлекает к чему-то еще? т.е.
tar xjvf foo.tar.bz2
cd something-else
# see all files that were within original project-root
Я знаю о-C, но я хочу его таким образом, что что-то еще еще не существует.
Можно переименовать корень проекта в tarball с GUI с 7 zip (и вероятно другие archiver программы также), но это может сделать полный цикл повторного сжатия распаковки на сжатом tarballs. (Читайте: это может требовать времени на большом, сжатом в большой степени tarballs.)
Лучший способ сделать, что Вы хотите, состоит в том, чтобы изменить имя прежде, чем создать tarball. Простой путь состоял бы в том, чтобы временно переименовать корень проекта к чему-то еще:
# temporary rename; tar; restore original name
$ mv project-root something-else ; tar cjf foo.tar.bz2 something-else ; mv something-else project-root
Я, вероятно, пошел бы немного более сложный: сделайте копию с именем, которое я хочу в tarball. Это избегает потенциальных ошибок, или пропущенные шаги в любом процессе fix-it-up-later могли бы использоваться, и я мог бы хотеть иметь в наличии обе копии для других целей.
# make me a copy
$ ( cd project-root ; tar cf - . ) | ( mkdir something-else; cd something-else; tar xf - )
# test the copy here if needed
$ diff -r --brief project-root/ something-else/
# create my tarball
$ tar cjf foo.tar.bz2 something-else