Excluindo arquivos antigos no Linux
Me deparei com a necessidade de excluir arquivos criados a mais de 10 dias.
Solução:
find ./ -mtime +1 -exec rm {} \;
Exclui todos os arquivos modificados a mais de um dia, na pasta corrente.
find ./tmp* -mtime +1 -exec rm {} \;
Exclui todos os arquivos modificados a mais de um dia, na pasta corrente, e que iniciam com nome tmp
Espero que este post seja útil.
Add comment Outubro 15, 2009
Utilizando rsync para backup de dados automático entre servidores
Precisei sincronizar algumas pastas do nosso servidor principal para um servidor secundário. Utilizamos dois servidores Ubuntu 8.04. A solução veio com o Rsync, que já vem instalado por padrão nesta distribuição.
No computador destino criei a pasta /home/tiago/sincronizacao-servidor.
Lendo o man do rsync cheguei a conclusão que, para o meu caso, alguns parâmetros serão úteis:
v - verbose
-r, --recursive recurse into directories
-u, --update skip files that are newer on the receiver
-h, --human-readable output numbers in a human-readable format
-i, --itemize-changes output a change-summary for all updates
-P same as --partial --progress
-t Preserva a data original do arquivo
--delete-excluded
Então minha linha de comando ficaria mais ou menos assim:
rsync -vtruhiP --delete-excluded /var/www/ tiago@192.168.0.3:/home/tiago/sincronizacao-servidor/
Este comando funciona corretamente, mas pede a senha do usuário tiago na máquina destino. Como desejo que o rsync seja executado sem minha intervenção, precisarei de uma solução para isto.
Na máquina origem execute a seguinte instrução (no meu caso como usuário root):
ssh-keygen -t dsa -f ~/.ssh/id_dsa
E vá teclando enter nas opções que for pedido. Não informe nada.
Copie o arquivo criado /home/tiago/.ssh/id_dsa.pub para o servidor destino
scp /root/.ssh/id_dsa.pub tiago@192.168.0.3:/home/tiago/.ssh/
No servidor destino, execute o seguinte comando
cat /home/tiago/.ssh/id_dsa.pub >> /home/tiago/.ssh/authorized_keys
Execute o comando rsync novamente e veja que não é mais solicitado senha. Se ainda pedir, reinicie os servidores. Caso reinicie e continue pedindo, execute todos os passos anteriores deste post novamente.
Criei um script para executar o rsync e criar um log disso (script achei na internet, citarei as fontes no final)
vim executa_sincronizacao.sh
E inseri neste arquivo o seguinte código:
#!/bin/bash
INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/var/log/rsync/`date +%Y-%m-%d`.txt
echo " " >> $LOG
echo " " >> $LOG
echo "|--------------------------------------------" >> $LOG
echo " Sincronizacao iniciada em $INICIO" >> $LOG
rsync -vruhiP --delete-excluded /var/www/ tiago@192.168.0.3:/home/tiago/sincronizacao-servidor/ >> $LOG
FINAL=`date +%d/%m/%Y-%H:%M:%S`
echo " Sincronizacao Finalizada em $FINAL" >> $LOG
echo "|--------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG
E dei permissão para execução no arquivo>
chmod 775 executa_sincronizacao.sh
Criei a pasta rsync dentro de /var/log/, para sejam criados os logs nesta pasta:
mkdir /var/log/rsync
Depois disso coloquei no crontab para executar o executa_sincronizacao.sh de tempos em tempos.
Espero que este post seja útil:
Fontes consultadas:
http://www.dicas-l.com.br/dicas-l/20041227.php
http://www.guiadohardware.net/comunidade/sincronizar-pastas/942084/
Add comment Outubro 15, 2009
Firebird 2.x e PHP 5.x – Mudança no tipo de campo retornardo em ibase_field_info
Em um sistema web eu desenvolvi um formatador e criador de relatórios automático em PDF. Para fazer as totalizações automaticamente, eu sempre testei se o tipo de campo de determinada coluna era INT64, utilizando $col_info['type']. Mas quando atualizamos o server com Firebird 2 e PHP 5.x esta função parou de funcionar. Fiz alguns testes e vi que nesta versão de PHP/Firebird os números com ponto flutuante retornam como NUMERIC(tamanho, precisão), e não mais como INT64. No meu caso específico, retorna como NUMERIC(18,2), que foi como criei os meus campos.
O problema disso é que se crio um campo com ponto flutuante com tamanho diferente de 18,2, terei que criar uma regra em minha classe PHP para tratar disso. Mas tudo bem, o importante é que achei a solução do problema citado.
Espero que este post seja útil.
Add comment Outubro 13, 2009
Instalando IbWebAdmin – Ferramenta de gerenciamento de banco de dados Firebird via Web
Ótimo artigo explicando como instalar o IBWebAdmin. Para quem não conhece o IbWebAdmin é um gerenciador de banco de dados, na mesma linha do IBExpert, mas roda totalmente no browser.
Vale lembrar que o artigo toma como base que você irá instalá-lo em um servidor Linux. Penso que em servidor windows não mude grande coisa.
Espero que este post seja útil.
Add comment Outubro 7, 2009
Apache2 – Não listar conteúdo de diretórios
Se você instalou o apache, e você não deseja que seus visitantes vejam todo o conteúdo de uma pasta que não contém o arquivo index.php ou index.htm, edite o arquivo /etc/apache2/sites-available/nome_do_seu_site e insira o conteúdo Options -Indexes abaixo da linha DocumentRoot. Segue abaixo os passos:
vim /etc/apache2/sites-available/nome_do_seu_site
2) Conteúdo do arquivo /etc/apache2/sites-available/nome_do_seu_site:
<VirtualHost *>
ServerAdmin seu_email@seu_site_com_br
ServerName seu_dominio.com.br
ServerAlias www.seu_dominio.com.br
# Indexes + Directory Root.
DirectoryIndex index.html index.htm index.php
DocumentRoot /var/www/pasta_do_seu_site/
Options -Indexes
# CGI Directory
ScriptAlias /cgi-bin/ /var/www/pasta_do_seu_site/cgi-bin/
Options +ExecCGI
# Logfiles
ErrorLog /var/log/apache2/nome_do_seu_site.error.log
CustomLog /var/log/apache2/nome_do_seu_site.access.log combined
</VirtualHost>
Espero que este post seja útil.
Add comment Outubro 1, 2009
Alteração no formato de data no PHP 5 -> Firebird 2.0
Quando migrei os dados de um servidor Debian 4 com PHP4 e Firebird 1.5 para Ubuntu 8.04 com Firebird 2 tive problemas em tratar a exibição de datas retornadas do banco. Como tenho muitos scripts que dependem do formato da data antiga (Mês/Dia/Ano) resolvi alterar diretamente no servidor o formato, ao invés de alterar os vários scripts que tinha.
A solução foi adicionar ao arquivo /etc/php5/apache2/php.ini a diretiva [interbase], e colocar o novo formato de data que eu queria. Para isso executei os seguintes comandos (como usuário root):
vim /etc/php5/apache2/php.ini
E no final deste arquivo eu inseri o seguinte conteúdo:
[interbase]
ibase.dateformat="%m/%d/%Y"
Restartei o Apache
/etc/init.d/apache2 restart
E pronto..tudo funcionou perfeitamente como era antes.
Espero que este post seja útil.
Add comment Setembro 28, 2009
Arrumar problema de acentuação em retorno de AJAX
Para quem já se deparou com caracteres estranhos no conteúdo retornado por uma função AJAX, a solução é bastante simples.
Se você utiliza PHP como linguagem, inclua no início do arquivo que você chamou via include() a seguinte linha:
header('Content-type: text/html; charset=iso-8859-1');
No meu caso, como tenho um arquivo com a minha classe php, e algumas funções mandam outros headers, deu aquele problema de que outro header já tinha sido enviado. Para contornar este problema alterei diretamente no apache.
Editei o arquivo /etc/apache2/conf.d/charset :
vim /etc/apache2/conf.d/charset
E inseri esta linha no final do arquivo:
AddDefaultCharset ISO-8859-1
Restartei o apache e funcionou corretamente.
Espero que este pos seja útil.
Add comment Setembro 28, 2009
Executando scripts na inicialização do Ubuntu 8.04
Precisei iniciar um script em PHP na inicilização do Ubuntu. Este script faz uma consulta no banco de dados MySQL de 30 em 30 segundos. Mostrarei neste post somente como fiz para colocar na inicialização.
1) Criei um arquivo em /var/ um arquivo chamado chama_monitora_email.sh, com o seguinte conteudo:
/usr/bin/php /var/www/site/scripts/monitora_email.php &
2) Dei permissão de execução ao arquivo
chmod 775 /var/chama_monitora_email.sh
3) Entrei no diretório /etc/rc.2/ e criei um link simbólico para o seu arquivo:
ln -s /var/chama_monitora_email.sh S99chama_monitora_email
4) Executei um reboot e para verificar se o script estava rodando utilizei o seguinte comando:
ps aux | grep monitora
E lá apareceu o dito cujo
root 4510 0.0 1.4 17356 6768 ? S 16:29 0:00 /usr/bin/php /var/www/site/scripts/monitora_email.php
Espero que este post seja útil para alguém.
Add comment Setembro 24, 2009
Instalando pure-ftp com autenticação em BD MySQL
Utilizei o tutorial abaixo para instalar o pure-ftp com suporte ao BD Mysql.
O que não está no tutorial mas é interessante saber:
Para habilitar o modo passivo (passive mode) crie um arquivo chamado PassivePortRange dentro da pasta /etc/pure-ftp/conf/ e informe dentro deste arquivo o range de portar que você quer utilizar. Por exemplo:
40000 41000
Mas aqui neste server que fiz agora não consegui logar com sucesso. Verifiquei no syslog a seguinte entrada:
pure-ftpd: (?@?) [ERROR] Sorry, invalid address given
Encontrei neste post que resolveria a questão se eu levantasse o serviço com a opção -H. Fiz isso e começou a logar tranquilamente.
Outro problema que tive foi em relação ao login pelo internet explorer, que exibia um erro e não abria a caixa de login. No faq disponível no site do pure-ftp existe como resolver isso. Minha solução foi criar um script para levantar o serviço com as opções -E e -b. O conteudo do meu arquivo que levanta o serviço ficou assim:
/usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -A -p 40000:41000 -O clf:/var/log/pure-ftpd/transfer.log -E -u 999 -B -H -E -b
E pronto..tudo funcionando direitinho.
Espero que este post seja útil para alguém.
Add comment Setembro 22, 2009
Configurando múltiplos domínios no Ubuntu.804 e Apache2
Ótima dica de como configurar o Apache2 para responder por múltiplos domínios em pastas diferentes.
Add comment Setembro 22, 2009