Ce script a été écrit aux environs de 2012. Dans le cadre d’une migration de plusieurs sites Internet et de boites mail depuis un serveur (Gentoo) vers un autre plus récent (Debian), j’avais codé un petit script dans le but d’automatiser les tâches.
Contexte
De nombreux éléments étaient à migrer sur le nouveau serveur :
- les sites Internet de chaque client
- les boites mail de chaque client
- les bases de données de chaque client
Scripts
Script principal, comportant les 3 fonctions de récupération automatique :
#!/bin/bash |
Explication
Fonction RecupWebSite()
La fonction RecupWebSite()
se charge de récupérer les fichiers du répertoire www
distant afin de les copier sur le serveur Debian. Elle restitue également les droits et le propriétaire tels qu’ils se trouvaient sous le serveur Gentoo.
La commande rsync
permet de faire de la synchronisation distante de fichiers. Ici elle copie le contenu du répertoire www
pour aller le placer sur le serveur Debian. L’option -v
active le mode verbeux et -a
est une archive de plusieurs options : r
,l
,p
,t
,g
,o
,D
.
La commande chown
permet d’attribuer le bon propriétaire, l’option -R
permet la récursivité à tout les fichiers et répertoires contenu dans www
.
La commande chmod
permet d’attribuer les droits, elle ajoute au groupe ceux de lecture et d’exécution et les supprime tous (lecture,écriture,exécution) à tout autre utilisateur.
Fonction RecupBD_Wordpress()
La fonction RecupBD_Wordpress()
a été spécialement écrite pour des sites fonctionnant avec le CMS Wordpress. Elle se charge de modifier le nom de la base de données, le nom d’utilisateur (qui ne sont pas exactement les mêmes sous Debian) et le mot de passe. Cette fonction fait également une sauvegarde de la base de données.
La commande sed
permet de remplacer du texte dans un fichier. Ici on cherche à remplacer l’ancien nom de la base de données, l’ancien nom d’utilisateur et l’ancien mot de passe du fichier wp-config.php
.
La commande ssh
ici permet de se connecter à la base de donnée afin de lancer la commande mysqldump
.
Fonction RecupMail()
La fonction RecupMail()
est composée de deux parties, la première copie simplement les emails de l’utilisateur postmaster sur le serveur Debian. Le répertoire new
contient les e-mails non lu, cur
les e-mails lus et tmp
les fichiers temporaires.
La deuxième partie de la fonction débute dans la condition. L’option -n
teste si le tableau AddMail[*]
est vide. S’il contient des adresses e-mails, la boucle for
se chargera de le parcourir et de copier, depuis le serveur Gentoo vers le serveur Debian, chaque répertoire correspondant à l’adresse e-mail ainsi que leur contenu.
Configuration
Script de configuration propre à chaque site web, à placer dans chaque répertoire /home/mon-domaine.ext
. Il est propre à chaque site Internet et permet de donner une valeur aux variables utilisées dans le script principal (scriptMigration.sh
).
#!/bin/bash |