Как указать, что другой “верхний уровень” называет для tar?

От спецификаций T520:

Процессор Intel® Core™ i5-2520M (двухъядерный, 2.50 ГГц, Кэш 3 МБ),

i5-2520M имеет 2 ядра + hyper поточная обработка для в общей сложности 4 ядер, замеченных системой.

8
10.05.2015, 10:58
3 ответа

с GNU TAR, вы можете использовать эту команду:

tar --transform="s|/|/abc/|" -Pcf bar.tar /

в противном случае, вот портативный способ сделать это, то есть тот, который не полагается на GNU или другое определенное расширение TAR, а основан на инструменте POSIX, который должен быть доступен на любой машине совместимости Unix:

pax -w -s '/\//\/abc\//' -f foo.tar /
2
27.01.2020, 20:12

Самое близкое, которое я могу найти - это опция - преобразование . Я точно не знаю, но я предполагаю, что это только GNU FLAG:

 --transform, --xform EXPRESSION
       use sed replace EXPRESSION to transform file names

Используя это, вы можете пройти команду SED , и изменить / , чтобы / abc :

tar cf root.tgz --transform 's/^\//\/abc/' /

Это все равно печатает / Путей при создании архива, но они станут / abc , когда вы его извлекаете.


Другой подход, если ваша TAR не имеет возможности - преобразование - это сделать / abc SymLink, указывая на / а затем смола, что:

$ ln -s / /abc
$ tar chf root.tgz /abc

-H имеет важное значение, как то, что говорит TAR , чтобы следовать ссылкам:

 -h, --dereference
       follow symlinks; archive and dump the files they point to

, которые будут иметь эффект настройки / ABC как каталог верхнего уровня.

5
27.01.2020, 20:12

Вот как я это сделал, что работает для тарирования из любого места (, а не только /):

tar --transform 's|^|/abc/|' -zcvf /path/to/dest.tgz *

Он просто добавляет /abc/к началу каждого пути.

1
27.01.2020, 20:12

Теги

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