Сначала создайте символическую ссылку, и пусть tar будет следовать за ней.
ln -s project-root something-else
tar cjf foo.tar.bz2 something-else/*
rm something-else
/*
Необходим для перехода по ссылке и выбора всего содержимого, а не просто для извлечения самой символической ссылки. В качестве альтернативы вы можете использовать опцию -h
в GNU tar (но это также будет следовать ссылкам внутри, что вы, возможно, не захотите делать) или опцию H
в BSD tar (как на Mac).
Вы даже можете сделать это изнутри проекта root:
cd project-root
ln -s . something-else
tar cjf foo.tar.bz2 --exclude=something-else/something-else something-else/*
rm something-else
Если вы явно не исключите это (как указано выше), символическая ссылка будет существовать и в tarball.
Очевидно, что если вы делаете это много раз и не возражаете против символической ссылки, висящей вокруг нее, не нужно каждый раз удалять и создавать заново.