Remova o spool tar compress do cron email

2

Eu tenho um trabalho de crontab que chama um script simples para fazer backup de um website:

15 0 1,10,20 * * /home/username/bin/backup_whatever

Este é o script:

#!/bin/bash
TODAY=$(date +"%Y%m%d")
FILE_TO_PUT="filename.$TODAY.tar.gz"
rm -rf /home/username/filename.tar.gz
tar -zcvf /home/username/filename.tar.gz -C / var/www/website/
s3cmd put /home/username/filename.tar.gz s3://s3bucket/backups/$FILE_TO_PUT

Como o comando tar compacta muitos arquivos, o e-mail que recebi quando isso é executado é muito grande. Como posso fazer para exibir apenas uma mensagem como compactação com êxito em vez da saída completa do comando tar?

Tudo bem, se eu fizer algo assim? Não é possível descobrir os códigos de retorno do tar.

EXITCODE=$(tar -zcvf /home/username/filename.tar.gz -C / var/www/website/)
if [ $EXITCODE -eq 0]
then
    echo "compression successfully"
else
    echo "compression unsuccessfully"
fi
    
por jherran 01.12.2014 / 09:48

1 resposta

0

Os códigos de saída de tar são documentados no manual "info" - use info tar para ler tudo sobre o tar. (Você pode ler sobre "info" com info info ). Parece que há 3 (principais) códigos de saída. Da documentação info tar :

Possible exit codes of GNU 'tar' are summarized in the following
table:

0
     'Successful termination'.

1
     'Some files differ'.  If tar was invoked with '--compare'
     ('--diff', '-d') command line option, this means that some files in
     the archive differ from their disk counterparts (*note compare::).
     If tar was given '--create', '--append' or '--update' option, this
     exit code means that some files were changed while being archived
     and so the resulting archive does not contain the exact copy of the
     file set.

2
     'Fatal error'.  This means that some fatal, unrecoverable error
     occurred.

   If 'tar' has invoked a subprocess and that subprocess exited with a
nonzero exit code, 'tar' exits with that code as well.  This can happen,
for example, if 'tar' was given some compression option (*note gzip::)
and the external compressor program failed.  Another example is 'rmt'
failure during backup to the remote device (*note Remote Tape Server::).

Se você gostaria de ter apenas uma mensagem de sucesso ou falha de sua escolha, recomendo o seguinte:

tar zcf /home/username/filename.tar.gz -C / var/www/website/ >/dev/null 2>&1
case $? in
    0)
        printf "Complete Success\n"
        ;;
    1)
        printf "Partial Success - some files changed\n"
        ;;
    *)
        printf "Disaster - tar exit code $?\n"
        ;;
esac

Esta invocação de tar pipes, tanto a saída padrão e erro para / dev / null, a.k.a. o caçamba de bits. Em seguida, o parâmetro especial, $? , que mantém o status de saída do pipeline de primeiro plano executado mais recentemente, é analisado pela instrução case para gerar a mensagem relevante.

    
por 18.02.2015 / 22:48

Tags