Назад | Перейти на главную страницу

tar: Как создать tar-файл с произвольными ведущими каталогами без перехода к родительскому каталогу

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

/home/user1/dir1

и я хочу создать tar только с "dir1" в качестве ведущего каталога:

/dir1/file1
/dir1/file2

Я знаю, что могу сначала перейти в каталог

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

Но при написании сценариев переход из каталога в каталог не всегда благоприятен. Мне интересно, есть ли способ сделать это с абсолютными путями без изменения текущих каталогов?

Я знаю, что всегда могу создать tar-файл с абсолютными путями ВНУТРИ и использовать

--strip-components 

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

Спасибо!

tar -C изменяет каталог

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

кстати, удобный для отслеживания смены каталогов ... используйте pushd и popd.

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

С помощью gnu tar вы можете создать архив с базовым каталогом, отличным от фактического, с помощью:

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

Просто адаптируйте выражение sed под свои нужды.

Хорошо, я также узнал, что

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

тоже работал так, как я хотел.

tar -C /home/user1/dir -c .