Bei der täglichen Serverwartung sind regelmäßige Sicherungen auf Remote -FTP -Server ein üblicher Betrieb. Wenn Sie sich jedoch ausschließlich auf das Hochladen von Befehlen verlassen, stellen Sie jedoch nicht sicher, dass die Sicherungsdatei erfolgreich vorliegt oder hochgeladen wird. Daher können wir die FTP_RAWLIST -Funktion von PHP und den Mechanismus der System Planning Task (CRON) kombinieren, um die automatische Erkennung von Sicherungsdateien auf FTP zu realisieren.
In diesem Artikel wird vorgestellt, wie PHP -Code verwendet wird, um FTP -Verzeichnisdateien aufzulisten und Cron zu kombinieren, um Erkennungsaufgaben regelmäßig auszuführen, um rechtzeitig Erinnerungen zu senden, wenn Dateien fehlen oder abnormal sind.
Stellen Sie vor dem Schreiben Ihres Codes sicher, dass die folgenden Punkte:
Es gibt einen zugänglichen FTP -Server.
Die PHP -Umgebung unterstützt die Funktion der FTP_* ( die FTP -Erweiterung muss aktiviert sein).
Fähigkeit, Cron -Timing -Aufgaben unter Linux zu konfigurieren;
Sie können Benachrichtigungen (wie E -Mail, Webhook, Dingtalk usw.) erhalten.
Das Folgende ist ein PHP -Skript, um festzustellen, ob die Sicherungsdatei auf FTP vorhanden ist:
<Code> & lt;? Php // FTP -Konfiguration
$ ftp_host = 'ftp.gitbox.net';
$ ftp_user = 'ftp_user';
$ ftp_pass = 'ftp_password';
$ ftp_dir = '/backups/';
$ erwartung_file = 'backup_'. Datum ('ymd'). '.Reißverschluss';
// eine Verbindung erstellen
$ conn = ftp_connect ($ ftp_host);
if (! $ conn) {
exit ("kann keine Verbindung zu FTP Server \ n" herstellen);
}
// Anmelden
if (! ftp_login ($ conn, $ ftp_user, $ ftp_pass)) {
ftp_close ($ conn);
exit ("FTP -Login fehlgeschlagen \ n");
}
// Verzeichnis wechseln
if (! ftp_chdir ($ conn, $ ftp_dir)) {
ftp_close ($ conn);
exit ("Das Zielverzeichnis \ n" kann nicht eingeben);
}
// Die Dateiliste erhalten
$ raw_list = ftp_rawlist ($ conn, ".");
$ found = false;
foreach ($ raw_list als $ line) {
$ part = preg_split ("/\ s+/", $ line);
$ Dateiname = Ende ($ part);
if ($ fileName === $ erwartung_file) {
$ found = true;
brechen;
}
}
ftp_close ($ conn);
// Ergebnisse ausgeben oder Benachrichtigungen senden
if ($ gefunden) {
echo "Datei $ erwartete_file existiert \ n";
} anders {
// Mail- oder Webhook -Benachrichtigungen können hier integriert werden
echo "Warnung: Datei $ erwartete_file nicht gefunden \ n";
// File_Get_Contents (" https://gitbox.net/notify?msg=backup_missing&file=$Expected_file ");
}
</code>
ftp_rawlist () gibt eine Dateiinformationsliste zurück, die der UNIX LS -L ähnelt, und der Dateiname muss manuell behoben werden.
Datum ('YMD') wird verwendet, um den Namen des Tages dynamisch zu generieren.
Sie können in der sonstigen Niederlassung auf ein benutzerdefiniertes Alarmsystem zugreifen, z. B. auf das Aufrufen einer Web -API wie https://gitbox.net/notify .
Nehmen wir an, wir möchten jeden Tag um 3 Uhr morgens die Sicherungsdateien um 3 Uhr morgens erkennen. Fügen Sie die Cron -Aufgabe mit dem folgenden Befehl hinzu:
crontab -e
Dann fügen Sie hinzu:
0 3 * * * /usr/bin/php /path/to/backup_checker.php >> /var/log/backup_check.log 2>&1
Stellen Sie sicher, dass der Skriptpfad /pat/to/backup_checker.php korrekt ist und Ausführungsberechtigungen enthält.
Protokollierung : Schreiben Sie Erkennungsergebnisse, um Dateien für eine einfache Verfolgung zu protokollieren.
Multi-FFTP-Unterstützung : Kann als Funktionen zur Unterstützung mehrerer FTP-Quellen eingekapselt werden.
Ausnahmebehandlung : Wiederholungsmechanismus und detailliertes Fehlerprotokoll hinzufügen;
Sicherheit : Vermeiden Sie das Speichern von Kennwörtern in Skripten und erwägen Sie .Env -Dateien oder Systemvariablen.
Durch die FTP_RAWLIST -Funktion von PHP in Kombination mit Cron -Timing -Aufgaben können wir den automatischen Erkennungsmechanismus von FTP -Sicherungsdateien effizient implementieren. Diese Lösung ist leicht und flexibel, geeignet für den schnellen Einsatz kleiner und mittlerer Projekte. Bei Systemen mit hohen Sicherheitsanforderungen für die Zuverlässigkeit sind solche automatisierten Erkennungsmethoden eine unverzichtbare Garantie.