cron 이메일에서 tar 압축 스풀 제거

cron 이메일에서 tar 압축 스풀 제거

웹사이트를 백업하기 위해 간단한 스크립트를 호출하는 crontab 작업이 있습니다.

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

스크립트는 다음과 같습니다.

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

tar 명령은 많은 수의 파일을 압축하기 때문에 이 명령을 실행할 때 수신되는 이메일이 매우 큽니다. 메시지를 하나만 표시하려면 어떻게 해야 하나요?압축 성공그러나 tar 명령의 전체 출력은 무엇입니까?

내가 이런 짓을 해도 괜찮을까? 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

답변1

info tartar 종료 코드는 tar에 대한 모든 내용을 읽을 수 있는 "정보" 매뉴얼에 문서화되어 있습니다 . (다음을 info info사용하여 "정보"에 대해 읽을 수 있습니다. 3개의 (기본) 종료 코드가 있는 것 같습니다. 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::).

원하는 성공 또는 실패 메시지만 받고 싶다면 다음을 수행하는 것이 좋습니다.

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

/dev/null(비트 버킷이라고도 함)에 대한 tar 파이프 표준 출력 및 오류 호출. 그런 다음 명령문은 $?가장 최근에 실행된 전경 파이프의 종료 상태를 보유하는 특수 매개변수를 구문 분석하여 case관련 메시지를 출력합니다.

관련 정보