Script de transfert de
données d’une base PostgresSQL puis un serveur hébergé puis mise en archive compressée
dans le dossier adéquat (Windows)
But :
Pouvoir sauvegarder quotidiennement des bases de données PostgresSQL ou autres, présentes sur un serveur virtuel ou pas, hébergé ou pas. Transférer ces données sous forme de backups sur un ordinateur local puis archiver en .rar ces backups avant de les positionner dans le dossier correspondant au mois et à l’année.
Script de
transfert :
Ouvrir un nouveau fichier texte ou sous Word ou avec Notepad ++, du moment que vous le nommez « nomfichier.bat ».
Voici le script, attention, les lignes 3 et 4 en fait n’en font qu’une seule mais la capture d’écran n’aurait pas été possible sinon. Donc entre username et les prochains -- il n’y a pas « entrée » c’est tout à la suite, donc un espace seulement.
Les
« ECHO » correspondent
aux # sous linux, ce sont des commentaires pour vous aider. Nous allons donc
chercher dans notre programme PostgresSQL l’exécutable pg_dump.exe qui permet de
configurer les backups dont nous avons besoin. S’en suit ensuite une ligne de
commande (que l’on peut mettre directement en Cron sous linux sans passer par
un script shell) dans lequel on va saisir les diverses information pour la connexion : --host è le nom du serveur hôte ayant les bases de données
intéressantes (nomserveur.nomdomaine.fr) --port èle port d’écoute configuré sur votre serveur pour ce
type d’échange. (par défaut, PostgresSQL utilise en TCP et UDP le port 5432
si vous ne l’avez pas reconfigurer) --username è le nom d’utilisateur de votre base PostgresSQL --password è le mot de passe
de votre base PostgresSQL (s’il n’y a pas de mot de passe configuré ce
sera : --no-password --role ènom du rôle à tenir, ici la base de données postgres --format è format du fichier backup à transférer --blobsèpermet l’inclusion des objets de grande taille dans
le backup (Binary Large OBject). --verboseègénère un fichier log indiquant certains
commentaires sur les objets, les erreurs ou de suivi de transmission. --file è chemin de dépôt du backup et configuration du nom du fichier : %date :~-4,4%
è
code l’année en cours %date :~-7,2%
è
code le mois en cours, sous forme 01 à 12 d’où notre arborescence qui va
suivre %date :~-10,2%
è
code le jour en cours « intranet »
è
nom de la base de données. Plus
de renseignements sur PostgresSQL et dump_pg.exe sur : |
Ainsi
les backups apparaîtront dans notre fichier avec ce format et ces
noms-ci :
Préparatifs de
l’arborescence :
C’est très facile, pour cela choisissez votre dossier de destination sur votre ordinateur local.
Pour ma part ce sera C:/dumps/pg (pour Postgres)
Dans ce dossier je crée deux dossiers : 2012 et 2013.
A l’intérieur de ces dossiers, 12 sous-dossiers allant de : 01 à 12 correspondant comme on s’en doute, aux mois de l’année.
Pourquoi 01 à 12 plutôt que de les appeler par leur nom respectif ? Pour une raison que j’évoque sur un autre script de ce site : Les codes reconnaissent le 01 comme janvier jusqu’au 12 pour décembre et il est plus facile d’automatiser une tâche ainsi pour faire une correspondance entre le nom du fichier qui contiendra la date d’application et son dossier de destination. |
Ci-dessous l’exemple dans le
dossier 2013
Script
d’archivage :
Le but est de mettre en archive le backup et de le poser directement dans le bon dossier (année/mois).
Pour la mise en archive j’ai choisi le .rar qui est présent sur mon installation et a la particularité d’être commandable via le prompt, donc scriptable (prompt = fenêtre MS-DOS).
Donc j’ai créé ce script. Les ECHOS sont des commentaires perso pour m’y retrouver à savoir quelle ligne code quelle commande.
Script RARification.bat.
La première commande : positionnement dans le répertoire de winrar pour
pouvoir appeler la commande rar.exe Ici
la commande rar (a, permet d’ajouter des fichiers à une archive) créé le
fichier, indiqué avec son chemin et son nom (ici en relatif avec les valeurs
% pour les dates) terminé par .rar à partir du fichier éponyme en .backup. è remarque ce script n’est valable que s’il est lancé
le même jour que la création des fichiers .backup sinon le nom relatif ne
correspondra plus puisqu’il s’agit de dates en cours. Plus sur la commande rar ici (merci à Ballajack) : http://www.ballajack.com/commande-rar-expliquee La seconde commande : puisque l’archive est créée dans le dossier
dumps/pg et que nous n’avons plus besoin de la commande rar nous pouvons nous
positionner dans dumps/pg La troisième commande : Nous allons d’abord déplacer l’archive dans le
dossier correspondant à l’année et au mois. Nous aurions pu faire en deux fois le déplacement, et dans le dossier
de l’année et dans celui du mois mais même si j’ai appris par expérience que
vouloir faire trop de choses à la fois, finit par poser problème et surtout
pour les tests, si ça ne fonctionne pas, nous sommes plus difficilement à
même de savoir ce qui à raté. Donc plus de simplicité = plus d’assurance. Ici
Il n’y avait pas beaucoup de problèmes à gérer. Pour
déplacer une archive ou un fichier la commande « move » très simple
à utiliser. Nous donnons le chemin du fichier suivi du chemin de destination.
Ici remarquons que j’appelle le dossier
de destination par les variables % des dates de l’année et du mois en cours,
ainsi comme les noms de mes dossiers correspondent, l’interpréteur de
commande comprend dans quel dossier les ranger en fonction du nom et du jour
en cours. Par la suite il est même renommé en fonction de la date en cours,
mais que normalement il portait déjà grâce à la première commande. è notons que j’appelle les fichiers avec leur chemin
absolu et non relatif alors que nous sommes déjà dans le dossier dumps/pg.
Vous avez l’œil, et bien oui je pourrai très bien appeler les fichiers sans
mettre C:\dumps\pg devant, d’ailleurs c’est ce qui se passe dans la 4 ième
commande. La quatrième commande : (superbe transition non ?) Elle supprime juste
le fichier .backup à partir duquel nous avons créé l’archive afin de ne pas
avoir des tonnes de fichiers backup ne
servant à rien. |
Voyons l’exécution du script via la fenêtre de prompt. Je l’ai placé dans un dossier appelé scripts dans lequel je me place pour le lancer en ligne de commande pour voir son évolution.
Comme chacun sait à partir de la 4 ième ligne où je lance RARification.bat, tout le reste se fait automatiquement sans intervention de ma part normalement, c’est justement afin de savoir si et où ça coince que je lance toujours mes scripts en ligne de commande dans mes phases de tests.
Nous voyons bien le changement de répertoire pour aller se
placer dans celui de winrar et créer l’archive. Nous
voyons aussi que je n’ai qu’une version d’évaluation…bon.
Nous voyons ensuite le déplacement dans le répertoire C:\dumps\pg et le déplacement de l’archive dans le dossier de l’année et ensuite du mois, qui d’ailleurs ici sont déjà codés avec la date en cours.
Suit la suppression du backup original.
A partir de ce moment, nous savons que le script est opérationnel.
Il ne nous reste qu’une chose à faire : automatiser les tâches.
Automatisation des
tâches pour lancer les scripts :
Nos deux scripts sont opérationnels. Pour que leurs tâches se lancent seules il va falloir créer des tâches dans le gestionnaire de tâches automatiques.
Pour ce faire aller dans le panneau de configuration et rentrer dans « tâches planifiées ».
Créez une tâche par script ainsi vous pourrez décider l’heure à laquelle chacune des tâches doit se lancer. C’est aussi une des raisons pour lesquelles j’ai réalisé deux scripts. Ainsi je peux décider de laisser assez de temps à la première tâche pour pouvoir démarrer la seconde sans risquer de créer des tâches superposées et incomplètes.
Créez donc une nouvelle tâche que vous nommerez de la même façon que le script qu’elle doit lancer ainsi visuellement ce sera plus facile de s’y retrouver. Dans les différents onglets, renseignez le script à lancer ainsi que la planification. Pour ne paramétrer que certains jours, choisissez «Toutes les semaines » et ainsi vous pourrez cocher que les jours où vous voudrez activer ces scripts.
Une fois les deux tâches créées elles devraient apparaître ainsi, avec les indications de l’heure d’exécution, les jours et la mise en place de ces scripts.
Nos tâches sont créées et soit nous pouvons attendre la prochaine exécution, soit nous pouvons les lancer manuellement en cliquant droit et «lancer maintenant».
Vérification de la
bonne exécution des scripts :
Rentrons dans le dossier 2012 /04 puisque c’est le mois en cours et voyons après un mois si les archives sont bien à leur place.
Nous voyons que c’est le cas. Voyons maintenant plus en avant, à partir du prompt (fenêtre agrandie) et d’un dir /S (dir –R sur linux) l’arborescence complète des dossiers et de leur contenu.
Dir /S sur dumps/pg/2012
Voilà, j’espère comme d’habitude que ce didacticiel vous a été utile.
Pour toutes questions supplémentaires ou incorrections présentes, merci de me contacter.
Rédigé par Jason Pinaud en mai 2012.