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
첫 번째 옵션은 메시지 본문에 원하는 텍스트를 사용할 수 있습니다. 두 번째 옵션은 메시지 본문이 비어 있는 이메일을 보냅니다. 실패한 백업에 대해 두 번째 이메일 명령에 대해 동일한 변경을 반복합니다.
학습을 위해서는 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가 실행됩니다.