LINUX.ORG.RU

TAR: частичный dereference

 , ,


0

2

Всем доброго времени. Пытаюсь создать нужный мне архив в Centos6 с помощью tar, столкнулся с проблемой. Пусть есть примерно такая структура папок:

site1:
--dir1=>symlink to site2:dir1
--dir2=>symlink to something
--dir3

site2:
--dir1
--dir4
Мне нужно сделать архив содержимого папки site1, причем символическая ссылка dir1 должна быть раскрыта, а все остальные нет. Как я понял, tar-опция --dereference раскрывает все симв. ссылки и поэтому не подходит. Следующей мыслью было исключить dir1 из архива и потом добавить в него аналогичную папку из site2:
cd path/to/site1
#тут мы своеобразным образом делаем архив содержимого папки site1 со всеми скрытыми файлами вроде .htaccess,
#не забывая исключить пути "." и ".."
tar -cf ../site1.tar `ls -a | grep -v "^\.$" | grep -v "^\.\.$" | grep -v "^dir1$"` 
cd path/to/site2
tar --append --file=../site1.tar dir1
И вуаля, получаем архив с нужным нам содержимым (в корне которого лежат папки сайта 1 с раскрытой симв. ссылкой dir1)

И все бы хорошо, но я хочу использовать сжатие этого архива, а дописывать в сжатый архив нельзя, это раз. А два - потребуется дополнительное дисковое пространство для архива tar и плюс для созданного архива gz, а хотелось бы сделать все одной конвейерной командой: архив, дописывание в архив, сжатие, шифрование. Большой буфер дисковой квоты для двойного создания архива выделять не хочется. Сам архив, сжатие и шифрование конвейером делаются успешно, а вот как быть с раскрытием указанной симв. ссылки - ума не приложу. Можно с этим что-то сделать? Буду признателен за любые мысли и наводки!

ИМХО, с tar'ом так не получится, может какой архиватор сможет объеденять несколько архивов, читая их из pipe'ов, но tar нет.

Можно создать нужный вам набор файлов/каталогов копируя их с помощью ″cp -l″ (создания hard-link'ов), а потом уже это заворачивать в tar и удалять.

mky ★★★★★ ()

--dir1=>symlink to site2:dir1

Заменить линк на mount --bind

И проблема отпадет.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.