Un script en python pour vérifier ses sauvegardes

Introduction


J'ai profité du besoin de réécriture de ce script pour m'itinier à python. Plutôt que du script shell tout bête ou du perl tout illisible, je me suis dit qu'il serait intéressant de jetter un oeil à python.

Le besoin est assez simple :
j'ai deux PC sous linux qui stockent des fichiers et qui se sauvegardent en croisé (via d'autres scripts déjà écrits ; vu la simplicité et la puissance de python, je m'amuserais peut-être à les réécrire à l'occasion).
Prenons par exemple le serveur 1, le script de sauvegarde qui tourne dessus copie son fichier sur le serveur 2 et s'arrange pour garder n générations.

Mon inquiétude (et donc ce que j'ai envie de vérifier) c'est que ce script de sauvegarde s'execute mal ou encore que la copie du serveur 1 vers le serveur 2 plante en plein milieu.

Mon but est donc de faire tourner localement sur le serveur 2 un script qui va vérifier que les sauvegardes sont bien présentes, de la bonne date et de la bonne taille.

Je suis désolé si vous autres experts de python trouvent ce script complètement horrible, ne respectant pas la phylosophie de python ou que sais-je. C'est mon premier script python et m'a permis de découvrir globalement ses possibilités, et je dois dire que je suis plutôt enthousiaste car c'est un langage a la fois simple et puissant.

Fonctionnalités

Vérification de la présence du fichier de sauvegarde :


Pour chaque sauvegarde à vérifier, je voulais pouvoir en contrôler sa présence, sa fraicheur, ainsi que sa taille.
Comme beaucoup de sauvegardes, mes fichiers backups ont une date/heure dans leur nom, j'ai donc choisit d'utiliser les expressions régulières pour essayer de trouver mes sauvegardes :
Imaginons que dans le répertoire /home/backups, nous avons les fichiers suivants :

Dans le programme, je vais donc lui dire de vérifier, dans le répertoire /home/backups (par exemple) les fichiers du type '.*MesSitesWebs.+\.tar\.gz'

Ensuite, je passe simplement 3 paramétres supplémentaires : un pour la vérification de la date et deux pour la taille :

Vérification de la date :

Le principe est qu'il faut trouver au moins un fichier sauvegardé dont la date est dans l'intervalle 'acceptable' de sauvegarde. J'ai défini des intervalles journalières, hebdo, mensuelles ou annuelles.
Prenons par exemple journalière ('d') : si le vérificateur ne trouve pas de fichier (dont le nom correspond à l'expression régulière bien sûr et) dont la date de modification est inférieure aux 24 dernières heures, alors le test échoue et une erreur est remontée.

Vérification de la taille :

le premier paramètre est la taille de comparaison
le second est le type de comparaision :

Vérifications multiples :


Dans la fonction main(), il est possible d'enchaîner plusieurs vérifications de suite (en copiant/collant un bloc de vérification et en modifiant les paramètres appropriés)

Envoi d'un email en cas d'échec :


En cas d'échec d'au moins une des vérifications, un email sera envoyé au destinataire paramétré avec le détail des erreurs rencontrées.

Personnalisation du script :


La quasi totalité de la personnalisation est dans la fonction main() :

ajouter / modifier les blocs de vérifications et en mettre autant que souhaité (mais au moins 1 bien sûr).
exemple d'un bloc :

# Check d'un fichier backupé
  TmpIsOk, TmpTexte = VerifFilesInDirectory('/home/backups/', '.*_BACKUP_MYSQL.+\.tar\.gz', 'd', 1600000, 'sup')
  if TmpIsOk == -1:
    EmailTexte = EmailTexte + "\\n" + TmpTexte + "\\n"

Personnaliser l'envoi d'email :
Il faut simplement changer les paramètres de l'appel de la fonction SendEmail :

SendEmail('admin@example.com', 'dest@domain.com', 'PB de SAUVEGARDE', EmailTexte, 'localhost')

Télécharger l'archive

FilenameFilesizeDate
. verifbackups-demo_v0.1beta.zip 2.58 kB 2008-08-11

Crédits et liens

Pour découvrir python, j'ai parcouru un certains nombre de sites très bien faits, dont voici un aperçu :

Ecrivez un commentaire

  • Les champs obligatoires sont marques d'une *.

Si vous avez du mal a lire le code, cliquez sur l'image du code pour en generer une nouvelle.
Code de securite:
 
Thomas
Posts: 1
Comment
Re: Un script en python pour vérifier ses sauvegardes
Reply #2 on : Sat December 30, 2006, 01:46:46
Le but n'était pas effet d'alimenter la guerre perl/python, mais juste que je voulais essayer. Effectivement tout ceci est largement faisable en perl.
Joyeuses fêtes.
admin
Posts: 1
Comment
Perl ou Python?
Reply #1 on : Sat December 30, 2006, 01:45:59
Hi Thomas,
je ne sais pas (et ne crois d'ailleurs pas) que ce soit plus compliqué que ça de faire ce que tu réalises en Perl.
La gestion des expressions régulières se fait quand même assez bien en Perl et à titre personnel je fais le contrôle de mes sauvegardes en Perl et ça marche aussi bien,

Bon réveillon et en espérant qu'on se verra plus souvent en 2007,

Nwanda (Evariste)
Last Edit: December 30, 2006, 01:46:15 by admin