У меня несколько пользователей на одной машине с FreeBSD7.3. У каждого пользователя есть свой сайт (всего один). Каждый сайт представляет собой копию главного сайта с небольшими отличиями (например, конфигурация базы данных, файлы шаблонов).
Это как много Wordpress с разными пользователями на одной машине.
Проблема в:
Сделал патч для мастер-сайта. Как я могу обновить все эти сайты одновременно, правильно меняя права доступа и права собственности.
IE: у меня есть такой патч:
/ темп / патч / www /
--index.php
- включает / system.php
И у меня много пользователей с такой же структурой каталогов и несколькими другими файлами:
/home/mike/www/mikebestsite.com/
--index.php
--index2.php
- включает / system.php/home/john/www/superjohnsite.com/
--index.php
- включает / system.php
--includes / break.php/home/larry/www/larry-e-king.com/
--index.php
- включает / system.php
--css / larry.css
Вот небольшой фрагмент bash, который поможет вам.
Я предполагаю, что все в /home
это каталог и соответствует *\.com
это сайт, на котором вы хотите заменить index.php
и includes/system.php
. Если такая логика не подходит, возможно, вам придется внести некоторые изменения самостоятельно.
Я тестировал его в ограниченных пределах. Убедитесь, что ls -ld
во FreeBSD пользователь находится в третьем поле, а группа - в четвертом поле. Также, --reply=yes
это GNUism. Возможно, вам придется использовать -f
или эквивалент BSD для принудительной замены существующего файла без взаимодействия.
for D in `find /home -type d -name '*\.com'`
do
myuser=`ls -ld $D | awk '{print $3}'`
mygroup=`ls -ld $D | awk '{print $4}'`
echo "Updating ${D}..."
cp ${D}/index.php ${D}/index.php.ORIG
cp ${D}/includes/system.php ${D}/includes/system.php.ORIG
cp --reply=yes /path/to/temp/patch/www/index.php ${D}
cp --reply=yes /path/to/temp/patch/www/includes/system.php ${D}/includes
chown $myuser:$mygroup ${D}/index.php
chown $myuser:$mygroup ${D}/includes/system.php
echo "--------------------------------"
echo ""
done