segunda-feira, 21 de fevereiro de 2011

Acabando com as entradas de sites repetidas do Filezilla

No local onde trabalho para pagar as contas, eu e toda a equipe que trabalha comigo usamos regularmente o programa Filezilla para transferências de arquivos por ftp, para atualizar os servidores web rodando nosso código PHP por exemplo. Pessoalmente acho o FTP lento e ele possui poucos recursos comparado com alternativas bem melhores como rsync. Uma brincadeira com o acrônimo F.T.P é que ele significa "Foi-se o Tempo Peixe". Por motivos alheios a mim ainda usamos FTP.

O Filezilla é um excelente programa para fazer transferências FTP. Mas temos um pequeno problema com ele. Quando importamos um arquivo xml com os dados de um servidor FTP gerado pelo Filezilla acabamos com entradas duplicadas na tela "Gerenciador de Sites". Isso é bem frequente no nosso caso pois temos mais ou menos 40 sites. E para completar a bagunça os dados de servidores podem estar diferentes com servidores com senhas ou usuários alterados.

Pensando numa forma de unificar as listas de servidores FTP geradas pela exportação do Filezilla eu cheguei a um pequeno programa para fazer isso. É escrito em PHP e funciona na linha de comando. O uso é bem simples, após dar permissão de execução para o arquivo "unify.php" basta executar o seguinte comando:
./unify.php "diretório"
Você deve ter o PHP instalado obviamente. No windows você pode usar algo como php unify.php "diretório".

Onde está escrito "diretório" você deve colocar o caminho de uma pasta onde todos os arquivos xml gerados pelo Filezilla estão. Depois de processar e mostrar alguma saída o programa vai gerar um arquivo chamado output.xml dentro da pasta output. Pronto! Este arquivo output.xml pode ser importado novamente no programa e deve conter somente entradas únicas. No programa eu considero entradas únicas os servidores que estão registrados com nome de usuário, endereço de servidor e senha diferentes.

Caso você tenha entradas repetidas no Filezilla, basta você exportar usando a opção "Arquivo->Exportar...-> Escolha Exportar entradas do gerenciador de websites". O Filezilla irá gerar um arquivo xml. Rode o programa de acordo com o comando mostrado acima, e o arquivo gerado, output.xml, irá conter somente entradas únicas.

É claro que antes de importar o output.xml você deve limpar os sites já registrados no Filezilla, ou você terá entradas duplicadas novamente. No Filezilla (eu uso a versão 3.2.7.2) aparentemente não tem uma opção para excluir todas  as entradas de uma vez só. No linux, você pode apagar manualmente as entradas do arquivo sitemanager.xml localizado em ~/.filezilla/sitemanager.xml. Você pode apagar todas as tags "Server" ou deixar somente uma, assim você só terá que apagar uma quando importar o arquivo output.xml.

O programa atualmente considera que todos os sites registrados estão dentro da mesma pasta no Gerenciador de Sites. Provavelmente ele gera um xml diferente para várias pastas. E caso seus arquivos gerados pelo Filezilla sejam muito grandes o programa pode alcançar o limite de memória de execução do script, neste caso você pode aumentar o limite usando "ini_set('memory_limit', '128M');" dentro do próprio script logo na primeira linha php.

Nenhum comentário:

Postar um comentário