Dans la maintenance quotidienne du serveur, les sauvegardes régulières des serveurs FTP distantes sont une opération courante. Cependant, se fier uniquement aux commandes de téléchargement ne garantit pas que le fichier de sauvegarde existe ou est téléchargé avec succès. Par conséquent, nous pouvons combiner la fonction FTP_RAWList de PHP et le mécanisme de la tâche de planification du système (CRON) pour réaliser la détection automatique des fichiers de sauvegarde sur FTP.
Cet article présentera comment utiliser le code PHP pour répertorier les fichiers de répertoire FTP et combiner Cron pour effectuer des tâches de détection périodiquement pour envoyer rapidement des rappels quand les fichiers sont manquants ou anormaux.
Avant de commencer à écrire votre code, assurez-vous que les points suivants sont:
Il existe un serveur FTP accessible;
L'environnement PHP prend en charge la série de fonctions FTP_ * ( l'extension FTP doit être activée);
Capacité à configurer les tâches de synchronisation CRON sous Linux;
Vous pouvez recevoir des notifications (telles que le courrier électronique, le webhook, le dingtalk, etc.).
Ce qui suit est un script PHP pour détecter si le fichier de sauvegarde existe sur FTP:
<code> & lt ;? Php // Configuration FTP
$ ftp_host = 'ftp.gitbox.net';
$ ftp_user = 'ftp_user';
$ ftp_pass = 'ftp_password';
$ ftp_dir = '/ backups /';
$ attendu_file = 'Backup_'. Date («ymd»). '.fermeture éclair';
// créer une connexion
$ conn = ftp_connect ($ ftp_host);
if (! $ Conn) {
exit ("Impossible de se connecter à FTP Server \ n");
}
// Se connecter
if (! ftp_login ($ Conn, $ ftp_user, $ ftp_pass)) {
ftp_close ($ Conn);
exit ("FTP Login a échoué \ n");
}
// Répertoire de commutation
if (! ftp_chdir ($ Conn, $ ftp_dir)) {
ftp_close ($ Conn);
exit ("Impossible de saisir le répertoire cible \ n");
}
// obtient la liste des fichiers
$ raw_list = ftp_rawlist ($ Conn, ".");
$ trouvé = false;
foreach ($ raw_list comme $ line) {
$ Parts = preg_split ("/ \ s + /", $ line);
$ filename = end ($ parties);
if ($ filename === $ attendu_file) {
$ Found = true;
casser;
}
}
ftp_close ($ Conn);
// Sortie des résultats ou envoyez des notifications
if ($ trouvé) {
Echo "File $ attend_file existe \ n";
} autre {
// Les notifications Mail ou WebHook peuvent être intégrées ici
echo "Avertissement: fichier $ attendu_file non trouvé \ n";
// file_get_contents (" https://gitbox.net/notify?msg=backup_missing&file=$expected_file ");
}
</code>
FTP_RAWLLIST () Renvoie une liste d'informations de fichier similaire à Unix LS -L , et le nom de fichier doit être résolu manuellement;
La date («ymd») est utilisée pour générer dynamiquement le nom du fichier de sauvegarde du jour;
Vous pouvez accéder à un système d'alarme personnalisé dans la branche ELSE , comme appeler une API Web telle que https://gitbox.net/notify .
Supposons que nous voulons détecter automatiquement les fichiers de sauvegarde à 3 heures du matin tous les jours, ajoutez la tâche cron en utilisant la commande suivante:
crontab -e
Puis ajouter:
0 3 * * * /usr/bin/php /path/to/backup_checker.php >> /var/log/backup_check.log 2>&1
Assurez-vous que le chemin de script /path/to/backup_checker.php est correct et a des autorisations d'exécution.
Journalisation : écrivez des résultats de détection pour journaliser les fichiers pour un suivi facile;
Prise en charge multi-FTP : peut être encapsulé en fonction pour prendre en charge plusieurs sources FTP;
Gestion des exceptions : ajoutez le mécanisme de réessayer et le journal d'erreur détaillé;
Sécurité : Évitez d'enregistrer les mots de passe en clair dans les scripts, envisagez d'utiliser des fichiers .env ou des variables système.
Grâce à la fonction FTP_RAWList de PHP combinée avec des tâches de synchronisation CRON, nous pouvons implémenter efficacement le mécanisme de détection automatique des fichiers de sauvegarde FTP. Cette solution est légère et flexible, adaptée au déploiement rapide de projets de petite et moyenne taille. Pour les systèmes avec des exigences de fiabilité de sauvegarde élevées, ces méthodes de détection automatisées sont une garantie indispensable.