De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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. :)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários