Selective syncronisation of two directories in UNIX (Solaris)
I'm wondering if anyone knows of a nice way to partially duplicate (hard link) files between two directory structures?
My current fall back is a script invoked by cron.
As background:
I ask since I have two groups who both need to access a body of files in a directory structure served via HTTP using Tomcat. A privileged group may access all the files and a less privileged group may only access a "public" subset. These sets are not aligned to particular directories but the different class of file can be identified by their naming convention (but not extension).
Поэтому моя текущая идея состоит в том, чтобы обслуживать две отдельные директории, одна из которых содержит только частные (возможно, защищенные паролем), а другая - открытые. Затем запустить некоторый периодический процесс, посредством которого я создаю жесткие ссылки из общедоступных файлов, чтобы они появлялись в личных каталогах для удобства привилегированных пользователей. Я выбираю ссылку в этом направлении, так как более важно, чтобы файл сразу был доступен для непривилегированных пользователей. (priv = admin, unpriv = обычный пользователь)
Я надеюсь, что в этом есть смысл. Я постараюсь уточнить, есть ли у кого-нибудь вопросы.
2 ответа
Я бы использовал символические ссылки.
Вы можете использовать этот скрипт Bash:
#!/bin/bash
ln -s $1 $2/$(basename $1)
с чем-то вроде этих двух команд:
find unpriv_criteria -exec ./linkscript {} /unpriv/dir \;
find priv_criteria -exec ./linkscript {} /priv/dir \;
Что-то вроде того, что предложил Деннис, будет работать на постоянной работе или в другом подобном.
Если бы это был Linux, я бы указал на inotify, который позволил бы вам исключить работу cron и задержку из жестких ссылок, отражающих исходный каталог.
Однако в Solaris этого не существует.
Если жесткие ссылки не слишком критичны, работа cron, скорее всего, будет хорошо работать.