Ceci est une ancienne révision du document !



Sauvegarder un ou des sites internet via FTP et leurs bases de données MySQL

Ce script va vous permettre de sauvegarder un ou plusieurs sites internet sur votre disque dur local, ainsi que la(les) base(s) de données MySQL associées.

Il utilise lftp pour récupérer les fichiers, et mysqldump ou http://sql.free.fr/backup.php pour les sites perso de free pour récupérer les bases de données

Les sauvegardes ftp vont écraser les fichiers modifier, ajouter les nouveaux fichiers et supprimer les fichiers qui ne sont pas sur le serveur.

Les sauvegardes MySQL créent un fichier date_heure.tar.bz2 ou date_heure.sql.gz pour les sites perso de free

Vérifiez que apt://lftp\lftp et mysql-server sont bien installés.

Créez un fichier nom_que_l_on_veut.sh et mettez-y ce code :

#!/bin/bash
# Version 0.1

# ATTENTION : lftp et mysql-server doivent être installés

# FONCTIONNALITÉS : 
#  - Sauvegarde des fichiers distants via FTP
#  - Sauvegarde des bases de données MySQL distantes via mysqldump ou http://sql.free.fr/backup.php pour les sites perso de free
#  - Sauvegarde de plusieurs sites




#Variables à renseigner : copiez collez le bloc en modifiant le numéro entre crochets, dans l'ordre [0] puis [1], ... en fonction du nombre de sites à sauver

 # Début du bloc à paramétrer
nom_du_site[0]=login0.free.fr     # Nom du site internet (juste pour info)
rep_sav_ftp[0]=$HOME/Sauvegardes/ftp/login0     # Répertoire où seront sauvés les fichiers récupérés du site par ftp. Laissez vide si vous ne voulez pas de sauvegarde ftp
rep_sav_sql[0]=$HOME/Sauvegardes/sql/login0     # Répertoire où seront sauvés les bases de données du site. Laissez vide si vous ne voulez pas de sauvegarde sql
serveur_ftp[0]=ftpperso.free.fr     # adresse du serveur ftp
utilisateur_ftp[0]=login0     # utilisateur ftp
mdp_ftp[0]=mdp0     # mot de passe ftp
rep_ftp[0]=/rep     # répertoire sur le serveur ftp à sauvegarder. Mettre simplement / pour sauver le site en entier
serveur_sql[0]=sql.free.fr     # adresse du serveur mysql
utilisateur_sql[0]=login0     # utilisateur mysql
mdp_sql[0]=mdp0 # mot de passe mysql
liste_bases_de_donnees[0]=      # liste des bases de données à sauver, séparées par des espaces (inutile pour les sites perso de free). Ex : mon_forum mon_blog
 # Fin du bloc à paramétrer

 # Début du bloc à paramétrer
nom_du_site[1]=mon_site.org     # Nom du site internet (juste pour info)
rep_sav_ftp[1]=$HOME/Sauvegardes/ftp/mon_site_org     # Répertoire où seront sauvés les fichiers récupérés du site par ftp. Laissez vide si vous ne voulez pas de sauvegarde ftp
rep_sav_sql[1]=     # Répertoire où seront sauvés les bases de données du site. Laissez vide si vous ne voulez pas de sauvegarde sql
serveur_ftp[1]=ftp.mon_site.org     # adresse du serveur ftp
utilisateur_ftp[1]=login1     # utilisateur ftp
mdp_ftp[1]=mdp1     # mot de passe ftp
rep_ftp[1]=/     # répertoire sur le serveur ftp à sauvegarder. Mettre simplement / pour sauver le site en entier
serveur_sql[1]=     # adresse du serveur mysql
utilisateur_sql[1]=     # utilisateur mysql
mdp_sql[1]=     # mot de passe mysql
liste_bases_de_donnees[1]=      # liste des bases de données à sauver, séparées par des espaces (inutile pour les sites perso de free). Ex : mon_forum mon_blog
 # Fin du bloc à paramétrer



sauver(){
 #Sauvegarde des fichiers via FTP
 if [ "${rep_sav_ftp[$i]}" != "" ]; then { # Pas de sauvegarde si le répertoire de sauvegarde n'est pas indiqué
  echo
  echo Sauvegarde FTP de ${nom_du_site[$i]}
  echo
  if [ ! -e "${rep_sav_ftp[$i]}" ]; then {
   mkdir -p "${rep_sav_ftp[$i]}"
  } fi
  lftp ftp://${utilisateur_ftp[$i]}:${mdp_ftp[$i]}@${serveur_ftp[$i]} -e "mirror -e ${rep_ftp[$i]} ${rep_sav_ftp[$i]} ; quit"
 } fi

 #Sauvegarde de la base MySQL via mysqldump
 if [ "${rep_sav_sql[$i]}" != "" ]; then { # Pas de sauvegarde si le répertoire de sauvegarde n'est pas indiqué
  echo
  echo Sauvegarde SQL de ${nom_du_site[$i]}
  echo
  if [ ! -e "${rep_sav_sql[$i]}" ]; then {
   mkdir -p "${rep_sav_sql[$i]}"
  } fi
  cd ${rep_sav_sql[$i]} # on se place dans le repertoire ou l'on veut sauvegarder les bases
  if [ "${serveur_sql[$i]}" = "sql.free.fr" ]; then {
   wget http://sql.free.fr/backup.php --post-data="login=${utilisateur_sql[$i]}&password=${mdp_sql[$i]}&check=1&all=1" -O backup.sql.gz
  }
  else {
   j=0
   for j in ${liste_bases_de_donnees[$i]}; do
    mysqldump -h${serveur_sql[$i]} -u${utilisateur_sql[$i]} -p${mdp_sql[$i]} $j > ${j}_`date +%D | sed 's;/;-;g'`.sql # Sauvegarde des bases de donnees en fichiers .sql
    tar jcf ${j}_`date +%D | sed 's;/;-;g'`.sql.tar.bz2 ${j}_`date +%D | sed 's;/;-;g'`.sql # Compression des exports en tar.bz2 (le meilleur taux de  compression)
    rm ${j}_`date +%D | sed 's;/;-;g'`.sql # Suppression des exports non compresses
   done
  } fi
 } fi

}


len=${#nom_du_site[*]}
i=0
while [ "$i" -lt "$len" ]
do
  sauver
  let "i = $i + 1"
done


exit 0

Puis rendez ce fichier exécutable

chmod +x nom_que_l_on_veut.sh

Il ne vous reste plus qu'à l'exécuter !

Faites appeler ce script automatiquement à intervalle régulière par cron ou fcron

  • sauvegarder_un_site.1222085571.txt.gz
  • Dernière modification: Le 22/09/2008, 14:13
  • (modification externe)