Ich habe ein Backup-Skript, das als Cron-Job ausgeführt wird und täglich ein Backup von /var/log/messages/ erstellt. Bitte beachten Sie, dass dieses Skript eher zum Lernen als zur tatsächlichen Anwendung dient. Ich habe if / else-Anweisungen hinzugefügt, um den Exit-Code nach der Ausführung des Tar-Befehls zu überprüfen. Das Skript funktionierte vorher einwandfrei, aber nachdem ich diese Funktion hinzugefügt habe, hängt es sich auf. Code unten:
#!/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
Ausgabe:
[root@nidesant2 Scripts]# ./backup.sh
messages
^C
(Interrupt -- one more to kill letter)
Antwort1
Ändern
mail -s "Backup of /var/log/messages was successful!" $admin
Zu
echo hello | mail -s "Backup of /var/log/messages was successful!" $admin
oder
mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null
Bei der ersten Option können Sie einen beliebigen Text für den Nachrichtentext verwenden. Bei der zweiten Option wird die E-Mail mit einem leeren Nachrichtentext gesendet. Wiederholen Sie die gleiche Änderung für den zweiten E-Mail-Befehl für eine fehlgeschlagene Sicherung.
Zu Lernzwecken sollten Sie den erfolgreichen Abschluss des Erstellens, Kopierens und Löschens der Tar-Datei überprüfen, bevor Sie feststellen, ob der Vorgang erfolgreich war. Dazu können Sie Folgendes tun.
Ändern
tar -czvf $of messages
Zu
tar -czvf $of messages && cp $of /home/user/ && rm -rf $of
Außerdem würden Sie mit dieser Änderung cp $of /home/user/
und rm -rf $of
vom Ende des Skripts entfernen.
Dann wird Ihr if/else basierend auf der erfolgreichen Ausführung aller drei Befehle oder der erfolglosen Ausführung eines der drei Befehle in dieser Zeichenfolge ausgeführt.