Limpando lixeira centralizada do Samba

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

[ Hits: 12.932 ]

 


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

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

Perfis com uma pitada de tunning

Renomeando Konsole

Limitando sessões KDE LTSP 4.2

Resolvendo problema de Nagios + NPC

Leitura recomendada

Apostila de Shell Script para iniciantes

Shell Script no Eclipse - It is possible!

Acessando mais que 9 parâmetros em shell script

Backup da pasta de usuário sem copiar os arquivos ocultos

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

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts