Укажите корневой каталог внутри tarball

Есть ли способ выполниться

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, но я хочу его таким образом, что что-то еще еще не существует.

7
задан 31.10.2014, 17:15

1 ответ

Можно переименовать корень проекта в 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
2
ответ дан 07.12.2019, 15:05

Теги

Похожие вопросы