Wie kann ich die Sicherungsprotokolle automatisch professionell überprüfen? Ich möchte es lieber nicht jeden Morgen manuell für 15 Server tun.
Ich muss Dateien von einem Computerordner in einen Netzwerkfreigabeordner kopieren. Es geht um eine Sicherung.
Könntest du ein Bash-Skript schreiben, das die Aufgabe jeden Tag um 23 Uhr erledigen könnte? Das Skript sollte auch herausfinden können, welche Dateien bereits kopiert wurden. Natürlich! Hier ist ein Beispiel-Bash-Skript, das die Aufgabe erledigen sollte:

```bash
#!/bin/bash

# Quell- und Zielordner
source_folder=/Pfad/zum/Computerordner
destination_folder=/Pfad/zur/Netzwerkfreigabeordner

# Überprüfen, ob der Zielordner existiert, ihn erstellen, falls nicht
if [ ! -d "$destination_folder" ]; then
  mkdir -p "$destination_folder"
fi

# Nur neue und geänderte Dateien kopieren
rsync -av --update "$source_folder" "$destination_folder"

# Eintrag im Protokoll hinzufügen
echo "$(date): Sicherung abgeschlossen" >> /var/log/backup.log
```

Um dieses Skript jeden Tag um 23 Uhr auszuführen, kannst du einen Cron-Job verwenden. Um deine Crontab-Datei zu bearbeiten, führe `crontab -e` im Terminal aus und füge die folgende Zeile hinzu:

javascript

0 23 * * * /Pfad/zum/Sicherungsskript.sh

Dies führt das Skript jeden Tag um 23 Uhr aus. Die `0` am Anfang gibt an, dass es genau in der Minute (0. Minute) ausgeführt werden soll, und das `*` für die anderen Felder bedeutet, dass es jeden Tag des Monats und jeden Monat ausgeführt werden soll.

Der in dem Skript verwendete `rsync`-Befehl kopiert nur Dateien, die neu sind oder seit der letzten Sicherung geändert wurden. Das bedeutet, du musst dir keine Sorgen machen, bereits gesicherte Dateien zu kopieren.

Das Skript fügt außerdem einen Protokolleintrag zu `/var/log/backup.log` hinzu, der das aktuelle Datum und die Uhrzeit enthält, wenn die Sicherung abgeschlossen ist. So kannst du das Protokoll überprüfen, um sicherzustellen, dass die Sicherung erfolgreich durchgeführt wurde.
Du kannst ein Skript erstellen, um die Sicherungsprotokolle automatisch zu überprüfen und dir eine Zusammenfassung per E-Mail zu senden. Hier ist ein Beispiel-Skript, das du nach Bedarf anpassen kannst:
    
    
```bash
#!/bin/bash

# E-Mail-Einstellungen
email_subject="Sicherungsprotokoll-Zusammenfassung"
email_to="deine_email@example.com"

# Liste der Server
servers=(
  "server1:/var/log/backup.log"
  "server2:/var/log/backup.log"
  # Füge weitere Server bei Bedarf hinzu
)

# Funktion, um den letzten Protokolleintrag für einen Server zu erhalten
get_last_log_entry() {
  server_log=$1
  ssh $server_log "tail -n 1 /var/log/backup.log"
}

# Hauptfunktion
main() {
  email_body=""
  
  for server_log in "${servers[@]}"; do
    last_log_entry=$(get_last_log_entry $server_log)
    email_body+="Server: ${server_log}
Letzte Sicherung: ${last_log_entry}

"
  done

  echo -e "$email_body" | mail -s "$email_subject" "$email_to"
}

main
```

Stelle sicher, dass du `deine_email@example.com` durch deine tatsächliche E-Mail-Adresse ersetzt. Du kannst weitere Server zur `servers`-Liste hinzufügen, indem du demselben Format folgst: `servername:/var/log/backup.log`.

Um dieses Skript automatisch jeden Morgen auszuführen, kannst du einen weiteren Cron-Job hinzufügen. Wenn du beispielsweise die E-Mail-Zusammenfassung um 9 Uhr morgens senden möchtest, füge die folgende Zeile zu deiner Crontab hinzu (führe `crontab -e` aus, um sie zu bearbeiten):
    
    
```javascript
0 9 * * * /Pfad/zur/Überprüfung_der_Sicherungsprotokolle.sh
```

Dieses Skript geht davon aus, dass du eine SSH-basierte Authentifizierung mit Schlüsseln zwischen der Maschine, auf der das Skript ausgeführt wird, und den Servern eingerichtet hast, sodass du nicht nach einem Passwort gefragt wirst. Es erfordert auch, dass der Befehl `mail` verfügbar ist, der auf den meisten Systemen mit dem Paketmanager installiert werden kann (z. B. `apt-get install mailutils` auf Ubuntu).

Durch Ausführen des Skripts `Überprüfung_der_Sicherungsprotokolle.sh` erhältst du eine E-Mail-Zusammenfassung der letzten Sicherungsprotokolleinträge für alle Server. So kannst du ihren Status überprüfen, ohne jeden Server manuell zugreifen zu müssen.