Вопрос: tar - удалить ведущие компоненты каталога при извлечении


Как вы можете извлечь только целевой каталог, а не полный каталог?

компресс

tar cf /var/www/site.tar /var/www_bak/site

экстракт

tar xf /var/www/site.tar -C /tmp

Это даст:

/tmp/var/www/site

Как можно избежать создания всего каталога, когда файл будет извлечен?

Я хочу, чтобы он извлекал:

/tmp/site

70
2017-11-11 14:58


Источник




Ответы:


Почему бы не использовать -C при создании:

$ tar cf /var/www/site.tar -C /var/www_bak/ site

27
2017-11-11 15:12



TMTOWTDI. Это тоже сработает, используя тот же -C вариант;) - MikeyB
Он хочет убрать путь от некоторых ведущих компонентов, а не изменять выходной каталог. Ниже приведен правильный ответ. - aymericbeaumet
Мы не можем использовать его, когда кто-то другой готовит архив. - jww


Вы хотите использовать --strip-components=NUMBER вариант tar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

Ваша команда будет:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

192
2017-11-11 15:04



Этот ответ лучше, потому что вам не нужно думать об этом до создания tar. Вы можете использовать его с уже созданным файлом tar. Спасибо @MikeyB! - Fabien Quatravaux
Это работало как прелесть! Благодаря! - Marcello de Sales
Я рад сообщить об этом как в GNU tar, так и в BSD tar. - Nathan Osman
и потому, что вы не можете быть создателем tar ... (или если вы делаете это с помощью другого инструмента, и этот инструмент делает глупые вещи ...) - xenoterracide
вы все еще можете пропустить --strip-components флаг, если вы используете встроенную реализацию busybox tar, хоть. - sylvainulg