Das Backup-Skript hängt

Das Backup-Skript hängt

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 $ofvom 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.

verwandte Informationen