shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Manutenção Lixeira Samba


From: Julio C. Neves
Subject: Re: [shell-script] Manutenção Lixeira Samba
Date: Mon, 10 Mar 2014 08:49:09 -0300

Olá Gilberto,
o find é um cmd recursivo por natureza, assim sendo, troque:

find /CAMINHO/DA/PASTA/RecycleBin -ctime +5 -type f

por:

find /DIRETORIO/ACIMA/DAS/PASTAS/RECICLEBIN -iname RecicleBin -type d -ctime +5

Isto é, vou procurar a partir de um nível acima todos os diretórios (-type d) cujo nome (-iname) seja RecycleBin, ignorando o case.

Gilberto, o find é um cmd muito poderoso, por isso aconselho que vc perca 10 minutos lendo este texto, escrito de forma leve, cheio de exemplos e em PT_br.

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

Rio de Janeiro

EDX

07-11/04

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



Em 10 de março de 2014 08:25, Gilberto Nunes <address@hidden> escreveu:
 

Colegas...

Desculpem insistir neste assunto.
Mas ainda estou dificuldade...
Aqui tenho diversas pastas do Samba cada uma com a pasta RecycleBin, que é a lixeira de cada compartilhamento.
Eu quero pegar os arquivos de cada pasta RecycleBin que sejam mais antigos que digamos 5 dias...
Com find:
find /CAMINHO/DA/PASTA/RecycleBin -ctime +5 -type f
Ok... Beleza. Funciona!...

Mas eu preciso que o find seja feito em todos os compartilhamentos onde tem a pasta RecycleBin...
É aqui que estou parado...
Se alguém puder ajudar agradeço

Obrigado.


Em 7 de março de 2014 17:24, Alfredo Casanova <address@hidden> escreveu:
 

o -type f indica apenas arquivos, ele não vai apagar os diretorios.


2014-03-07 16:21 GMT-03:00 Gilberto Nunes <address@hidden>:
 

Sim....

Mas agora tenho outro problema... Eu tenho que apagar os arquivos que estão dentro do diretório RecycleBin e não o diretório em sí...

Mas estou pesquisando aqui

valeu


Em 7 de março de 2014 16:03, Julio C. Neves <address@hidden> escreveu:

 

Se entendi bem (qdo sugeri o uso de yad, não havia entendido, achei que vc quisesse escolher os diretórios em tempo real), dá para resolver isso somente com o cmd find:

find /home/samba/shares -iname RecycleBin -type f -ctime +2 -exec rm -rf {} \+


Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

Rio de Janeiro

EDX

07-11/04

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



Em 7 de março de 2014 15:14, Gilberto Nunes <address@hidden> escreveu:
 

Desculpem... Já achei a respota no google...

Obrigado


Em 7 de março de 2014 14:52, Gilberto Nunes <address@hidden> escreveu:
Então.. Só pra completar o pensamento...

To usando assim:


# diretorio raiz do samba
#Diretorio da Lixeira
dirSamba="/home/samba/shares"
#Arquivo de Log
log="/var/log/lixeira.log";
log2="/var/log/tamanho_lixeira.log";
#Remove os arquivos que foram movidos para lixeira a partir x dias
dias="2";



# O for irá passar os retornos do find para o $i.
# O find irá procurar a partir do diretorio $dirSamba qualquer coisa que combine com o nome "RecycleBin".
for i in $(find "$dirSamba" -iname RecycleBin -type f -ctime "+$dias" ); do

    # O rm ira apagar recusivamente qualquer coisa que tiver dentro das pastas "RecycleBin".
    #ls "$i"/*
    ls "$i"
done

Veja que coloquei a variável dias e usei ctime "+$dias", mas não funcionou....

Só funcionou se eu coloco um sinal de menos ( - ) ao invés do sinal de mais ( + )...

O correto é - ou + ali no parâmetro -ctime ??

Obrigado


Em 7 de março de 2014 14:35, Gilberto Nunes <address@hidden> escreveu:

Wow!!!

Obrigo Willy... Era isso mesmo que eu queria... Obrigado...


Em 7 de março de 2014 14:33, Willy Romão <address@hidden> escreveu:

 

Gilberto,

Um simples find já te dará a todos os diretorios.

Exemplo:

# diretorio raiz do samba
dirSamba="/smb"

# O for irá passar os retornos do find para o $i.
# O find irá procurar a partir do diretorio $dirSamba qualquer coisa que combine com o nome "RecycleBin".
for i in $(find "$dirSamba" -iname RecycleBin); do
    # O rm ira apagar recusivamente qualquer coisa que tiver dentro das pastas "RecycleBin".
    rm -rf "$i"/*
done

Qualquer dúvida é só falar.

Willy Romão




On 03/07/2014 01:56 PM, Gilberto Nunes wrote:
 
Seria legal...

Mas nesse caso é para ser disparado por um contrab e creio que com yad ou qualquer outro programa que manipule telas não seria bom...

Trata-se de um servidor, que portanto não tem X-Server... Até tem, pois trata-se de um Zentyal server... Mas quero ficar restrito ao shell....

Valeu


Em 7 de março de 2014 13:51, Julio C. Neves <address@hidden> escreveu:
 
Se alguém tiver tempo (uns 15 ~ 20 minutos), pode reescrever esse script usando yad. Ficaria fantástico. Se ninguém fizer, talvez eu faça neste fim de semana.

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

Rio de Janeiro

EDX

07-11/04

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 


Em 7 de março de 2014 12:39, Gilberto Nunes <address@hidden> escreveu:

 
Olá amigos...

Estou pesquisando alguns scripts shell pra limpar a lixeira do Samba...

Encontrei esse por exemplo:

#!/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


Achei legal...


Mas aqui no meu caso, eu tenho uma pasta RecycleBin para cada compartilhamento...
Tipo:

Diretorio-A/RecycleBin

Diretorio-B/RecycleBin

Eu queria incrementar o script acima, para pegar diferentes pastas...

Alguém pode me dar uma ajuda??

Obrigado


--
Gilberto Ferreira




--
Gilberto Ferreira

-- 
Willy Romão




--
Gilberto Ferreira



--
Gilberto Ferreira



--
Gilberto Ferreira





--
Gilberto Ferreira




--
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619




--
Gilberto Ferreira



reply via email to

[Prev in Thread] Current Thread [Next in Thread]