tar: Як створити файл tar з довільними провідними каталогами без "cd" до батьківського dir


23

Скажіть, у мене є каталог файлів у

/home/user1/dir1

і я хочу створити тар з лише "dir1" як провідний каталог:

/dir1/file1
/dir1/file2

Я знаю, що спершу можу записатись у каталог

cd /home/user1/
tar czvf dir1.tar.gz dir1

Але при написанні сценаріїв стрибки з каталогу в каталог не завжди сприятливі. Мені цікаво, чи існує спосіб зробити це абсолютними шляхами без зміни поточних каталогів?

Я знаю, що я завжди можу створити файл tar з абсолютними шляхами ВНУТРІ та використовувати

--strip-components 

під час вилучення, але іноді додаткові назви шляху - це додаткова приватна інформація, яку ви не хочете поширювати за допомогою файлів tar.

Спасибі!

Відповіді:


24

tar -C зміни каталогу

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, зручний для відстеження змін каталогів ... використовуйте pushd та popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
Спасибі. Я не знав, що параметр "-C" повинен використовуватися перед іншими параметрами ... Я раніше спробував "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /", але це не спрацювало.
Ян

1
Не працює: tar: dir: Не вдається статистика: Немає такого файлу чи каталогу (якщо припустимо, що dir1 знаходиться під / home / user1 /)
tribbloid

21

За допомогою gnu tar ви можете створити архів із іншим базовим каталогом, ніж фактичний за допомогою:

tar -c --transform 's,^\.,mybasedir,' .

Просто пристосуйте вираз sed до ваших потреб.


5

Гаразд, я також це з’ясував

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

також працював так, як я хотів.


Хоча подвійні символи типу "*" тоді не працюють
Кертіс Яллоп

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.