Eu gerencio um punhado de servidores executando as várias funções de uma solução de backup on-line Ahsay .
Algumas vezes por ano, o software é atualizado e eu preciso aplicar patches em meus servidores.
Irritantemente, os patches são mal empacotados / distribuídos, então, onde alguém gostaria de ter os servidores instalados / atualizados usando o yum, tudo é manipulado manualmente.
Instalar o servidor pela primeira vez é bastante simples, descompacte o arquivo para / usr / local e execute install.sh (para criar scripts init e outros).
Depois disso, no entanto, a gestão começa a ficar irritante. Para fazer alterações de configuração e renomear o servidor, você faz alterações nos scripts de inicialização e nos arquivos xml reais que compõem o servidor.
Isso, por si só, não seria um grande problema se não fosse pelo fato de que toda vez que um novo patch é lançado, ele vem com as versões de estoque desses arquivos e instruções para sobrescrever os personalizados.
Reescrever os arquivos em cada atualização em vários servidores naturalmente é um incômodo.
Então eu me vejo revisando a maioria dos arquivos no patch, escolhendo os que eu acho que contêm as atualizações reais e atualizando apenas aqueles.
Agora, não são bilhões de arquivos, apenas o suficiente para serem irritantes. O último patch:
# find . -type f
./webapps/rdr/jsp/lib/common.js
./webapps/rdr/WEB-INF/lib/rdr.jar
./webapps/rdr/WEB-INF/web.xml
./webapps/rdr/WEB-INF/struts-config.xml
./webapps/obs/WEB-INF/lib/rdr.jar
./webapps/obs/WEB-INF/web.xml
./webapps/obs/WEB-INF/struts-config.xml
./tomcat/lib/libFileSysUtilObdX86.so
./tomcat/lib/libFileSysUtilFbdX64.so
./tomcat/lib/libFileSysUtilObdX64.so
./tomcat/lib/mail.jar
./tomcat/lib/libFileSysUtilSosSp9.so
./tomcat/lib/libFileSysUtilFbdX86.so
./tomcat/lib/libFileSysUtilLinX64.so
./tomcat/lib/libFileSysUtilLinSpc.so
./tomcat/lib/libFileSysUtilSosX86.so
./tomcat/lib/libFileSysUtilLinPpc.so
./tomcat/lib/libFileSysUtilLinArm.so
./tomcat/lib/libFileSysUtilLinP64.so
./tomcat/lib/libFileSysUtilLinX86.so
./tomcat/lib/libFileSysUtilSosX64.so
./tomcat/lib/libFileSysUtilSosSpc.so
./tomcat/lib/ani.jar
./bin/startup.sh
./bin/shutdown.sh
Ao fazer o seguinte, consegui identificar as diferenças de texto com mais facilidade:
for NEW in 'find . | xargs file | grep text | sed 's/:.*$//' | xargs'
do
OLD='echo $NEW | sed 's!^\.!/usr/local/rdr!''
echo -e "$NEW \t\treplaces $OLD"
diff $OLD $NEW
done
E neste patch mais recente, onde não há atualização (que eu poderia identificar) para qualquer um dos arquivos de texto. Significando que eu poderia simplesmente substituir o diff por rm $ NEW .
Depois disso, executei um diff sobre todos os arquivos, em vez de apenas os arquivos de texto:
# for NEW in 'find . -type f | xargs'; do OLD='echo $NEW | sed 's!^\.!/usr/local/rdr!''; diff $NEW $OLD; done
Binary files ./webapps/rdr/WEB-INF/lib/rdr.jar and /usr/local/rdr/webapps/rdr/WEB-INF/lib/rdr.jar differ
Binary files ./webapps/obs/WEB-INF/lib/rdr.jar and /usr/local/rdr/webapps/obs/WEB-INF/lib/rdr.jar differ
Binary files ./tomcat/lib/mail.jar and /usr/local/rdr/tomcat/lib/mail.jar differ
Binary files ./tomcat/lib/libFileSysUtilSosX64.so and /usr/local/rdr/tomcat/lib/libFileSysUtilSosX64.so differ
Binary files ./tomcat/lib/ani.jar and /usr/local/rdr/tomcat/lib/ani.jar differ
Dando a lista dos 5 (de 25) eu realmente preciso mudar.
Isso parece ser o tipo de mantenedor de dor de cabeça que os mantenedores lidam o tempo todo. Existe alguma maneira de tornar o processo menos pesado?
Meus servidores (se fizer alguma diferença) estão rodando o CentOS 6.5.