백업 스크립트가 정지 중입니다.

백업 스크립트가 정지 중입니다.

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가 실행됩니다.

관련 정보