Atualização de vários diretórios com permissões de usuário em mudança

1

Eu tenho vários usuários em uma máquina com o FreeBSD7.3. Cada usuário tem seu próprio site (apenas um). Cada site é uma cópia do site principal com pequenas diferenças (ou seja, configuração do banco de dados, arquivos de modelo). É como muitos Wordpresses com usuários diferentes em uma máquina.

O problema é:
Eu fiz um patch para o master-site. Como posso atualizar todos esses sites de uma só vez, alterando corretamente as permissões e a propriedade dos usuários.

IE: tenho um patch como este:

/temp/patch/www/
--index.php
--includes/system.php

E eu tenho muitos usuários com a mesma estrutura de diretórios e alguns outros arquivos:

/home/mike/www/mikebestsite.com/
--index.php
--index2.php
--includes/system.php

/home/john/www/superjohnsite.com/
--index.php
--includes/system.php
--includes/break.php

/home/larry/www/larry-e-king.com/
--index.php
--includes/system.php
--css/larry.css

    
por kirillorloff 28.07.2010 / 21:48

1 resposta

2

Aqui está um pequeno snippet rápido que deve fazer o truque para você.

Suponho que tudo em /home que é um diretório e corresponda a *\.com é um site onde você deseja substituir index.php e includes/system.php . Se essa lógica não for adequada, talvez você precise fazer algumas modificações por conta própria.

Eu testei dentro de restrições limitadas. Certifique-se de que a saída ls -ld no FreeBSD tenha o usuário no terceiro campo e o grupo no quarto campo. Além disso, --reply=yes é um GNUism. Você pode ter que usar -f ou o equivalente a BSD para forçar a substituição de um arquivo existente sem interação.

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
    
por 28.07.2010 / 22:59