View this page in english

15 Oct 2009

syncsite.sh: script shell pour synchroniser fichiers et bases de données d’un site WEB par connexion sécurisée

Présentation

syncsite.sh est un script shell bash qui permet de dupliquer, sauvegarder ou synchroniser un site WEB distant, de type CMS, à travers une connexion sécurisée SSH. Grâce à des variables de « pre-processing » et de « post-processing » intégrées à son système de configuration par fichiers externes, il peut s'adapter à n'importe quel type de CMS ; en effet, on ne duplique pas un blog WordPress ou DotClear comme un site TYPO3 ou Drupal.

Fonctionnement

Toutes les connexions dont il est question ici sont sécurisées.
  • La base de données
    • syncsite se connecte au site distant, demande la génération d'un dump SQL compressé de la base de données référencée par la variable db_name, transfert le dump sur le poste client et, si la variable auto_install_db vaut true, le décompresse ;
    • dans le cas d'une installation automatique de la BD, le code shell bash contenu dans la variable de configuration pre_process_dump_shell_script est appliquer au dump SQL avant son exécution ;
    • toujours dans le cas d'une installation automatique de la BD, celle-ci est installée après qu'un backup (une sauvegarde) de la base de données ait été effectuée; dans le cas où la variable make_db_backup vaut false, cette sauvegarde est détruite dès que l'installation a réussi.
    • enfin, si la variable post_process_sql_file_script est définie, le fichier SQL qu'elle référence est exécuté sur la base.
  • Les fichiers
    • les répertoires distants référencés par la variable remote_sync_dirs, sont synchronisés, à l'aide du logiciel rsync, sur le poste client dans le répertoire référencé par la variable local_root_dir ; cela permet de ne mettre à jour que les fichiers qui ont été modifiés depuis la dernière synchronisation ;
    • pour terminer, le script shell contenu dans la variable post_process_shell_script est exécuté avec comme paramètre local_root_dir.

Configuration

syncsite se configure à l'aide de fichiers externes; pour spécifier le fichier de configuration à utiliser on utilise l'option -f.
Cela donne par exemple syncsite.sh -f ~/.syncsite/mon_site.sh.
Si aucun fichier de configuration n'est spécifié, synsite cherche le fichier de configuration ~/.syncsite/default.sh; si ce fichier n'existe pas une interface dialog permet d'en choisir un de façon ergonomique.

Des fichiers de configurations sont déjà prédéfinis pour les CMS TYPO3 et WordPress. Ils permettent en particulier de récupérer automatiquement le nom de la base de données et les paramètres d'authentification directement dans les fichiers de configuration du site ; cela a déjà été vu pour TYPO3

TYPO3

Le fichier de configuration pour TYPO3 se trouve ICI

WordPress

Le fichier de configuration pour WordPress se trouve ICI

Conclusion

Le projet est placé sous contrôle Git à cette adresse.
Il dépend de bash, MySQL, bizip2 et rsync.

N'hésitez à proposer le fichier de configuration de votre CMS favori.