O script de backup está travado

O script de backup está travado

Eu tenho um script de backup para executar como uma tarefa cron e criar um backup diário de/var/log/messages/. Observe que este script é mais para experiência de aprendizado do que para aplicação real. Adicionei instruções if/else para verificar o código de saída após a execução do comando tar. O script funcionou bem antes, mas depois que adicionei esse recurso ele travou. Código abaixo:

#!/bin/bash

admin="[email protected]"
of=messages-backup-$(date +%Y%m%d).tgz

cd /var/log/

tar -czvf $of messages

if [ $? -eq 0 ]; then
  mail -s "Backup of /var/log/messages was successful!" $admin
  exit 0
else
  mail -s "Backup of /var/log/messages has failed!" $admin
  exit 1
fi

cp $of /home/user/
rm -rf $of

Saída:

[root@nidesant2 Scripts]# ./backup.sh 
messages
^C
(Interrupt -- one more to kill letter)

Responder1

Mudar

mail -s "Backup of /var/log/messages was successful!" $admin

para

echo hello | mail -s "Backup of /var/log/messages was successful!" $admin

ou

mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null

A primeira opção, você pode usar qualquer texto que desejar no corpo da mensagem. A segunda opção enviará o e-mail com o corpo da mensagem vazio. Repita a mesma alteração para o segundo comando de e-mail para um backup malsucedido.

Para fins de aprendizado, você deve verificar a conclusão bem-sucedida da criação do arquivo tar, copiá-lo e excluí-lo antes de determinar se foi bem-sucedido. Para fazer isso, você poderia fazer isso.

Mudar

tar -czvf $of messages

para

tar -czvf $of messages && cp $of /home/user/ && rm -rf $of

Além disso, com essa alteração você removeria cp $of /home/user/e rm -rf $ofdo final do script.

Então seu if/else será executado com base na conclusão bem-sucedida de todos os três comandos ou na conclusão malsucedida de qualquer um dos três comandos nessa string.

informação relacionada