Гуглил, может плохо гуглил, но лучше не вышло. Проблема следующая.
Есть папка /nohome/nouser/nofolder/ в ней есть еще куча вложенных папок и файлов в том числе и с точкой в начале. И лежит эта папка на компе номер 1.
Имя папки я получаю в скрипте виде $foldername Мне надо запаковать содержимое в архив так чтобы в архиве не было начального пути типа /nohome/nouser/nofolder/
Потому что на компе номер 2 распаковываться все это будет тоже в папку /nohome1/nouser1/nofolder1/ которую скрипт тоже получает в виде $foldername
Неизвестна ни вложенность ни намеки на имена. То есть содержимое $foldername может быть ЛЮБЫМ.
Но все это еще не самое главное. Этих самых $foldername всего примерно 3 плюс-минус 100 и все разные. Но даже и это еще не всё. Еще надо паковать с ключом -g и более того, точка из которой будет идти упаковка и распаковка тоже может меняться. То есть сегодня скрипт работает из папки ~/backup а завтра к примеру из папки ~/bak
в итоге получился вот такой монстр:
ttt=$(pwd)
cd $foldername1
tar -cpzf $ttt/bak1.tar.gz -g $ttt/bak1.snar –exclude=$samefolder1 ./
cd $foldername2
tar -cpzf $ttt/bak2.tar.gz -g $ttt/bak2.snar –exclude=$samefolder2 ./
cd $foldername3
tar -cpzf $ttt/bak3.tar.gz -g $ttt/bak3.snar –exclude=$samefolder3 ./
cd $ttt
Это конечно работает. Но как-то не элегантно. Неужели никак нельзя без выкрутасов со скачками по разным папкам?
Я реальный скрипт упростил чтобы не захламлять вопрос. В реальном скрипте есть еще много чего включая примерно такие конструкции timestamp=$(date +‘%Y-%m-%d_%H:%M:%S’) и их обработки так что скачки по папкам реально мешают. Их и так там получается не мало и без скачков для архивирования.