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.
Nenhum comentário foi encontrado.