Limpando lixeira centralizada do Samba

Publicado por Rogério Tomassoni em 19/04/2009

[ Hits: 12.281 ]

 


Limpando lixeira centralizada do Samba



Aí vai um pequeno script para limpar lixeira do Samba, lembrando que esse script limpa a lixeira por usuário, ou seja, dentro do diretório lixeira existe o diretório de cada usuário que excluiu algo.

O Samba usa uma lixeira centralizada para todos usuários. Sua estrutura seria assim:

.lixeira
|___ usuário-01
|      |_____arquivo-01
|      |_____arquivo-02
|___ usuário-02
|___ usuário-03
       |_____arquivo-01
       |_____arquivo-n

DICA: No Samba, as configurações para fazer uma lixeira centralizada ficariam assim, na seção Global:

vfs object = recycle

recycle:repository = /hd500g/.lixeira/%U # Note a variável de substituição %U aqui é substituída pelo nome do usuário
recycle:exclude = *.tmp, *.log, *.mp3 # Arquivos que nem para lixeira vão, são deletados mesmo
recycle:versions = yes#Mantem versões de arquivo com mesmo nome

Quer um pouco mais sobre variáveis de substituição?
  • %S Nome do serviço;
  • %u Nome do usuário do serviço;
  • %g Nome do grupo primário/principal do usuário, referente ao %u;
  • %U Nome do usuário da seção;
  • %G Nome do grupo primário/principal, referente ao %U;
  • %H Diretório Home do usuário, referente ao %u;
  • %L Nome NetBIOS do servidor Samba;
  • %I Endereço IP do cliente,
  • %T Data e hora.

Existem mais, mas essas são as mais utilizadas (no meu ponto de vista).

Agora vamos ao script:

#!/bin/bash
#Script com para limpeza recursiva para lixeira do Samba


urlDir="/hd500g/.lixeira"; #Diretório raiz da lixeira
arqTmp="/tmp/arvore.txt"; #Arquivo temporário para criação da árvore de diretório
arqLog="/var/log/lixeira.log"; #Arquivo de log, onde irá logar os arquivos removidos
idade="15"; # idade do arquivo em dias

ls -RF $urlDir |grep : |tr : / > $arqTmp #Lista os diretórios recursivamente e salva em arvore.txt, especificado acima
contDir=$(cat $arqTmp) # Conteúdo de arvore.txt

DATA_LOG=`date +%a-%d-%m-%Y-%H:%M:%S` # Data para manter o log mais específico
rm -f $arqLog # Removendo arquivo de log, para não enchê-lo (Se for usar logrotate nem precisa)

echo -e "***************$DATA_LOG***************" >> $arqLog # Cabeçalho para o log (Enfeite)

for x in $contDir; do #Loop para entrar nos subdiretórios

find $urlDir -type f -ctime $idade 2 > /dev/null | # Procura pelos arquivos com a idade especificada
while read arquivo; do
echo "Excluido: $arquivo" >> $arqLog # Aqui loga o nome do arquivo a ser removido
rm -rf $arquivo # Remove arquivo

done
done

echo -e "***************$DATA_LOG***************" >> $arqLog # Rodapé para o log (Enfeite)

rm -f $arqTmp # Remove o arquivo temporário com a árvore de diretórios

exit 0; #Finaliza

Bem, é isso aí!

Para mim funciona perfeitamente junto com crontab (toda sexta-feira ele roda).

Espero que ajude.

Outras dicas deste autor

Criando plugin para Nagios

Erro ao inciar sessão gráfica (status 256)

Controle de acesso Squid + LTSP4.2

Resolvendo problema de Nagios + NPC

Suporte remoto com x11vnc

Leitura recomendada

Três formas de executar HTTP Request em Shell Script

Shell script no logon do openSUSE 11.3 para definir profile com configurações do wine e atalhos

who - Comando com exemplos

Capturando screenshots com Shell Script

Aulas Shell Script do zero - Parte 8

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts