Linux: delete recursivo seguro dentro de scripts

0

Estou trabalhando em scripts automatizados rodando em uma máquina Linux (Debian). Esses scripts são iniciados a partir de um agendador e estão manipulando arquivos dentro de seus próprios diretórios.

No final dos scripts, preciso excluir arquivos temporários.

Atualmente, eu tenho algo assim:

#check that some variables are not empty
if [[ -z $var1 || -z $var2 || -z $var3 ]]; then
  echo "Some var is empty"
  exit 1
fi
workingdir=$var1/$var2
#some checks on working directory
if [[ ! -d $workingdir ]]; then
  echo "Directory error"
  exit 1
fi
cd $workingdir
if [[ $(pwd) != $workingdir ]]; then
  echo "Change directory error"
  exit 1
fi
#...here goes the main part of the script
#and at the end, the "cleaning"
if [[ -d $workingdir/temp/$var3 ]]; then
  find $workingdir/temp/$var3 -delete;
fi

Você tem alguma ideia que eu possa usar para reduzir o risco de remover algo errado?

Obrigado.

Atenciosamente

    
por lennelei 15.10.2018 / 10:14

1 resposta

1

Seu script sabe quais arquivos são criados e onde eles estão.

Esta declaração geral é um ponto importante aqui. Se você realmente quiser excluir apenas os arquivos criados, controle quais arquivos você cria. Então você normalmente faria:

TMP1=$(mktemp -t example.1.XXXXXX)
TMP2=$(mktemp -t example.2.XXXXXX)

para criar seus arquivos temporários (consulte man mktemp para obter detalhes) e faça

rm -f "$TMP1" "$TMP2"

quando terminar os arquivos temporários. Como alternativa, você pode criar um diretório temporário e excluí-lo.

Algo que você não deve fazer é

rm -f /tmp/example.?.*

porque também removerá os arquivos temporários de outras instâncias em execução do script.

    
por 17.10.2018 / 11:34