tar arquivos não utilizados, em seguida, excluí-los

0

Eu tenho pasta com subpastas e registros de sessões. Eu preciso de alguns comandos ou script para tar esta pasta sem arquivos de uso e, em seguida, excluí-lo. Eu tenho essa construção, mas não tenho certeza se isso deixar arquivos com o manuseio.

tar -zcvf /srv/log/prod/dms/espis/documentum/log/00029392-$(date +%F).tar /srv/log/prod/dms/espis/documentum/log/0002939
cd /srv/log/prod/dms/espis/documentum/log/00029396
rm -R *

Alguma idéia?

    
por Michell-Boy 26.03.2015 / 07:54

1 resposta

1

O rm -R realmente excluirá todos os arquivos (se houver permissões suficientes). Se você quiser deixar apenas os arquivos abertos no momento, você pode verificar com lsof +D /srv/log/prod/dms/ : ele listará todos os arquivos localizados em /srv/log/prod/dms/ e que estão atualmente abertos.

Tenha cuidado, para roteirizar isso, você deve ter certeza de que seu daemon mantém seus manipuladores de arquivos abertos (quer dizer, certifique-se de que ele não os abra somente quando precisar escrever nele ...).

Então, depois do seu tar , você pode escrever algo assim:

for f in $( find /srv/log/prod/dms/espis/documentum/log -type f -print ) ; do
  lsof +D /srv/log/prod/dms/espis/documentum/log | grep -w $f\$ >/dev/null
  if [ $? -eq 1 ] ; then
    echo "Delete $f"
  else
    echo "Keep $f"
  fi
done

EDIT: É claro que, se o seu daemon operar a rotação de logs, seria mais fácil excluir os arquivos de log anteriores a n dias com algo como find /srv/log/prod/dms/espis/documentum/log -type f -mtime +99 -exec rm -f {} \; (aqui -mtime +99 significa "não modificado desde 99 dias")

    
por 26.03.2015 / 10:20