você está aqui: Home  → Arquivo de Mensagens

Limpando o .recycle do samba

Colaboração: saulo fabrin

Data de Publicação: 09 de Junho de 2005

Quando utilizamos o samba como PDC, temos a opção de utilizar uma lib chamada .recycle, que realiza a tarefa de manter em um diretório (.recycle) todos os arquivos apagados pelos usuários, o que muitas vezes é bem mais rápido do que voltar backup e bibibi bóbóbó.

Um detalhe importante desta lib .recycle do samba é que quando um determinado arquivo é excluido de sua pasta original e enviado para a lixeira é mantida a data original do arquivo e não a data de exclusão do mesmo, o que trás dificuldades se queremos limpar a nossa lixeira deixando apenas os arquivos excluídos nos últimos 30 dias.

Para saber o dia em que o arquivo foi enviado para a lixeira vamos utilizar o seguinte comando:

  **stat /fileserver/.recycle/teste.txt**
  
  :  File: "/fileserver/.recycle/teste.txt"
  :  Size: 32256           Blocks: 64         IO Block: 4096   Regular File
  :  Device: 806h/2054d      Inode: 6373477     Links: 1
  :  Access: (0766/-rwxrw-rw-)  Uid: (  850/linux)   Gid: (  850/linux)
  :  Access: Tue May 31 19:34:00 2005
  :  Modify: Tue May 31 19:33:46 2005
  :  Change: Tue May 31 19:44:06 2005

O que nos interessa aqui é a linha do Change que contém a data, hora e ano em que o arquivo foi enviado para a lixeira, para isto utilizamos:

  **stat -c "%n %z" /fileserver/.recycle/teste.txt**
  
  teste.txt Tue May 31 19:44:06 2005
  
  onde:
      - -c - para definir formato
      - %n - exibe nome do arquivo
      - %z - exibe data da última modificação
  

Para facilitar fiz o seguinte script:

  : #!/bin/sh
  : #
  : # recycle.sh - Utilizado para remover arquivos da lixeira do samba
  : #
  : # Autor: Saulo Fabrin <caroco@gmail.com>
  : #
  : # -----------------------------------------------------------------
  : # Este programa deve ser colocado no cron e executado todos os dias
  : # para remover arquivo antigos da lixeira do samba com base nos
  : # parametros "DIR" e "DAT"
  : #
  : # Onde:
  : #
  : # DIR - diretorio principal onde esta localizado o .recycle
  : # DAT - remove os arquivos há 30 dias, a partir da data atual
  : #
  : # ----------------------------------------------------------------
  
  : DIR="/fileserver/"
  :  DAT="30"
  
  : #utilizado para gerar as datas
  : DAT1=``date --date "$DAT day ago" | awk '{print $1" "$2" "$3}'``
  : DAT2=``echo $DAT1 | awk '{print $1}'``
  
  
  : #localiza e exclui os arquivos de acordo com os parametros passados
  : find "$DIR" -type f -exec stat -c "%n %z" {} \; \
          | grep ".recycle"  | egrep -w "$DAT1" |   \
          awk -F "$DAT2" '{print $1}'| sed 's/^/"/g ; s/ $/"/g' \
          | xargs -replace rm

Lembrando que se o formato da data for diferente do apresentado nos exemplos acima o script deve ser alterado conforme as suas necessidades. :)



Veja a relação completa dos artigos de saulo fabrin

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script