Avoir une copie de son site Internet, c’est indispensable que ce soit pour avoir une sauvegarde ou pouvoir faire des tests en local. Vous pouvez bien sur utiliser un client lourd avec interface graphique comme Filezilla ou l’excellent FTP Rush mais la ligne de commande c’est quand même plus pratique que faire plein de clique! Surtout si vous voulez automatiser via crontab pour faire une synchro régulière de votre FTP.
Il y a des tonnes de client FTP pour Linux mais mon préférez c’est vraiment lftp car il est aussi puissant que simple d’utilisation et pour cause toutes les commandes usuelles de votre shell Linux sont aussi interprétées dans le shell de lftp. Pour ne rien gâcher, il peut s’utiliser en mode script ou en mode interactif, gère les queues de téléchargement en tache de fond et sait même gérer le FXP entre deux serveurs FTP. Vous l’aurez compris, c’est l’outil parfait pour récupérer une copie local de votre site web.
Installer lftp
sudo apt-get install lftp
Voici les principales variable qu’il est possible d’utiliser (vous trouverez plus de détails sur : doc.ubuntu-fr.org)
- Le -e commande à lftp d’exécuter ce qui est entre guillemets.
- Le mirror crée une copie exacte.
- Le -e de mirror efface les fichiers qui n’existent plus.
- Le -R signifie que le transfert se fait de l’emplacement local à l’emplacement distant.
- Le -x désigne les dossiers qu’il ne faut pas prendre en compte dans le transfert. On met autant de -x dossier_ignoré qu’il y a d’emplacements à ignorer. S’il n’y en a pas, on ne met tout simplement pas de -x. NOTE : Le chemin indiqué pour les dossiers à ignorer dépend du dossier local déclaré.
- Le quit coupe la connexion après le transfert.
Rapatrier son site web en local
Exemple pour effectuer une copie exact de votre site web distant dans le dossier local
lftp ftp://login:motdepasse@ftp.monsite -e "mirror -e /www/ /home/www/mon-site-local/ ; quit"
Vous pouvez ensuite faire un script shell pour automatiser la sauvegarde par FTP
#!/bin/bash
# Script de sauvegarde par FTP
#variables
DATE=`date +%Y-%m-%d`
HEURE=`date +%H:%M:%S`
LOG_FILE=Maj_site_$DATE.log
ERR_FILE=Erreurs.log
#Redirection dans un fichier log
exec 1>$LOG_FILE
exec 2>$ERR_FILE
#Début du traitement
echo $DATE - Synchro débuté à $HEURE
#lftp - récupération des fichiers distant
lftp ftp://FTP_LOGIN:FTP_PASSWORD@geekmag.fr -e "mirror -e /blog/ /appli/backup ; quit"
echo $DATE - Synchro terminée à $HEURE
Vous pouvez ensuite le lancer manuellement (en nohup pour qu’il tourne en arrière plan)
nohup ./backup_site.sh &
Ou encore mieux planifier l’exécution du script par crontab
crontab -e pour éditer la conf du planificateur
# m h dom mon dow command
* * * * 6 /dd1/system/appli/backup_site.sh
m est pour minutes [0-59];
h est pour heure [0-23];
dom est pour journée du mois [1-31];
mon est pour mois, de janvier à décembre [1-12];
dow est pour journée du dimanche au samedi [0-6];
command correspond au chemin d’accès absolu vers votre script
Voilà, il ne vous restera plus qu’à faire un dump de votre base SQL pour mettre votre site web totalement en sécurité