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


104

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

компресс

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

экстракт

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

Это даст:

/tmp/var/www/site

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

Что я хочу извлечь, чтобы:

/tmp/site

Ответы:


34

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

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

1
TMTOWTDI. Это тоже сработало бы, используя ту же -Cопцию;)
MikeyB

12
Он хочет убрать путь из некоторых ведущих компонентов, а не изменить каталог вывода. Ниже приведен правильный ответ.
aymericbeaumet

4
Мы не можем использовать его, когда кто-то еще готовит архив.

Потому что `` `_t = префикс - $ (дата +% Y% m% d); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" - файлы ...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` `
AnrDaemon

258

Вы хотите использовать --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

19
Этот ответ лучше, потому что вам не нужно думать об этом до создания tar. Вы можете использовать его с уже созданным файлом tar. Спасибо @MikeyB!
Фабьен Кватраво,

4
Я рад сообщить, что это работает как в GNU tar, так и в BSD tar.
Натан Осман

4
и потому что вы не можете быть создателем смолы ... (или если вы делаете это с другим инструментом, и этот инструмент делает глупости ...)
xenoterracide

однако, вы все равно можете пропустить --strip-componentsфлаг, если вы используете встроенную реализацию busybox tar.
sylvainulg

1
@FabienQuatravaux Хорошо, да --- если вы допустили ошибку и создали архив, включающий ведущие каталоги, которые вы не хотите видеть во время извлечения. Но проще построить архив без ведущих нежелательных каталогов.
Калаф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.