#liste_articles {display:block}

Mettre à jour un site Internet avec lftp

mercredi 21 novembre 2007

 

Mettre à jour un site Internet avec lftp

lftp

Lftp est un programme Linux s’exécutant en ligne de commande pour transférer une arborescence de fichiers via le protocole ftp. Celà permets notamment de :
 mettre à jour un site Internet modifié localement
 faire un backup de site en local

Dans la continuité de l’article publié sur Utiliser SubVersion - gestionnaire de versions le but est maintenant de mettre facilement et régulièrement le(s) site(s) à jour sur le serveur en ligne, à partir de l’arborescence développée localement et maintenue grâce à svn.

script shell pour un site

Voici un script permettant d’automatiser la mise à jour de la source en svn (update) et le transfert vers le site distant :

#!/bin/bash

# Déclaration de constantes
SERVER="serveur.site.net"
USER="login"
PASS="pass"
LOCAL="/home/pvincent/Programmation/www/dossier_site_svn_à_jour/"
DISTANT="$SERVER/dossier_site/"
EXCLUS="-x images/sources -x .*svn.* "

# Update SVN 
svn update $LOCAL

# Upload
lftp ftp://$USER:$PASS@$SERVER -e "mirror -e -R $EXCLUS  $LOCAL $DISTANT ; quit"

Options :
 -e : commande à lftp d’exécuter ce qui est entre guillements.
 mirror : crée une copie exacte en vérifiant la date des fichiers déjà présents sur le serveur (pas d’écrasement systématique)
 -R : copie depuis l’emplacement local vers l’emplacement distant
 -e de mirror : efface les fichiers qui n’existent plus. Attention à l’utilisation de cette option : si des ajouts ont été faits directement en ligne, ils seront perdus.
 -x : permets d’exclure certains répertoires lors de la copie. S’agissant d’un commit svn dans notre cas, il faut exclure automatiquement tous les dossiers .svn cachés du transfert. -x comprends les exepressions régulières et acceptent plusieurs entrées.

Enregistrer le script.sh précédent dans votre dossier de scripts sans oublier de le rendre éxécutable (Nautilus > clic-droit > propriété > éxécution > permissions > éxécutable).

Le lancer dans un terminal (Nautilus > double-clic > Executer depuis un terminal) et le transfert ou la mise à jour s’éxécute en fond de tâche.

script shell pour n sites

Pour mettre à jour les n sites avec la même source :

#!/bin/bash

# Déclaration de constantes
LOCAL="/home/pvincent/Programmation/www/dossier_site_svn_à_jour/"
EXCLUS="-x images/sources -x -x .*svn.* "

# Update SVN 
svn update $LOCAL

# Uploads
SERVER="serveur.site.net"
USER="login1"
PASS="pass1"
DISTANT="$SERVER/dossier_site/"
lftp ftp://$USER:$PASS@$SERVER -e "mirror -e -R $EXCLUS  $LOCAL $DISTANT ; quit"

SERVER="serveur2.site.net"
USER="login2"
PASS="pass2"
DISTANT="$SERVER/dossier_site/"
lftp ftp://$USER:$PASS@$SERVER -e "mirror -e -R $EXCLUS  $LOCAL $DISTANT ; quit"

SERVER="serveur3.site.net"
USER="login3"
PASS="pass3"
DISTANT="$SERVER/dossier_site/"
lftp ftp://$USER:$PASS@$SERVER -e "mirror -e -R $EXCLUS  $LOCAL $DISTANT ; quit"

En cas de grand nombre de sites, on devra optimiser le code avec un appel de fonction.

Documents :

par Patrick Vincent