バックアップスクリプトが中断されます。

バックアップスクリプトが中断されます。

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

最初のオプションでは、必要なテキストをメッセージ本文として使用できます。 2番目のオプションは、メッセージ本文が空の電子メールを送信します。バックアップが失敗した場合は、2 番目の 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は、3つのコマンドがすべて正常に完了した場合、またはその文字列の3つのコマンドのいずれかが失敗したときに実行されます。

おすすめ記事