cron 작업으로 실행되고 /var/log/messages/의 일일 백업을 생성하는 백업 스크립트가 있습니다. 이 스크립트는 실제 적용보다는 학습 경험에 더 가깝습니다. tar 명령 실행 후 종료 코드를 확인하기 위해 if/else 문을 추가했습니다. 이전에는 스크립트가 제대로 작동했지만 이 기능을 추가한 후에는 작동이 중단되었습니다. 코드는 아래와 같이 표시됩니다.
#!/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
산출:
[root@nidesant2 Scripts]# ./backup.sh
messages
^C
(Interrupt -- one more to kill letter)
답변1
변화
mail -s "Backup of /var/log/messages was successful!" $admin
도착하다
echo hello | mail -s "Backup of /var/log/messages was successful!" $admin
또는
mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null
첫 번째 옵션은 원하는 텍스트를 메시지 본문으로 사용할 수 있습니다. 두 번째 옵션은 메시지 본문이 비어 있는 이메일을 보냅니다. 백업이 실패하면 두 번째 email 명령에 대해 동일한 변경을 반복하십시오.
학습을 위해서는 tar 파일의 생성, 복사, 삭제가 성공적으로 완료되었는지 확인하고 성공 여부를 판단해야 합니다. 이렇게 하려면 이렇게 하면 됩니다.
변화
tar -czvf $of messages
도착하다
tar -czvf $of messages && cp $of /home/user/ && rm -rf $of
또한 이 변경을 통해 cp $of /home/user/
스크립트 끝에서 및 를 제거할 수 있습니다.rm -rf $of
그러면 if/else는 세 가지 명령이 모두 성공적으로 완료되었거나 해당 문자열의 세 명령 중 하나라도 실패했을 때 실행됩니다.