Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| sauvegarder_un_site [Le 28/09/2008, 23:18] – Script PHP de création d'un fichier .sql.gz topazz | sauvegarder_un_site [Le 21/10/2013, 15:31] (Version actuelle) – [Script PHP de création d'un fichier .sql.gz] 109.7.193.172 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Sauvegarder un ou des sites internet via FTP et leurs bases de données MySQL ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Principe ===== | ||
| + | |||
| + | 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. Pour récupérer les bases de données, il utilise soit mysqldump, soit http:// | ||
| + | |||
| + | Les sauvegardes ftp vont écraser les fichiers modifiés, ajouter les nouveaux fichiers et supprimer les fichiers qui ne sont pas sur le serveur. | ||
| + | Tous les x jours/mois, l' | ||
| + | |||
| + | Les sauvegardes MySQL créent un fichier date_heure.tar.bz2 ou date_heure.sql.gz pour les sites perso de free | ||
| + | |||
| + | ===== Prérequis ===== | ||
| + | |||
| + | |||
| + | Vérifiez que [[apt:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | |||
| + | Créez un fichier nom_que_l_on_veut.sh et mettez-y ce code : | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | # Version 0.31 : ajout de la possibilité de sauver une liste de répertoires en ftp pour chaque site internet + installation automatique des logiciels manquant | ||
| + | |||
| + | # FONCTIONNALITÉS : | ||
| + | # - Sauvegarde des fichiers distants via FTP | ||
| + | # - Sauvegarde des bases de données MySQL distantes via mysqldump ou http:// | ||
| + | # - Sauvegarde de plusieurs sites | ||
| + | |||
| + | #Variables à renseigner | ||
| + | sav_complete_tous_les=" | ||
| + | rep_log=$HOME/ | ||
| + | |||
| + | #copiez collez le bloc en modifiant le numéro entre crochets, dans l' | ||
| + | |||
| + | # Début du bloc à paramétrer | ||
| + | nom_du_site[0]=login0.free.fr | ||
| + | script_http[0]= # adresse http d'un fichier (php par exemple) à appeler | ||
| + | rep_sav_ftp[0]=$HOME/ | ||
| + | rep_sav_sql[0]=$HOME/ | ||
| + | serveur_ftp[0]=ftpperso.free.fr | ||
| + | utilisateur_ftp[0]=login0 | ||
| + | mdp_ftp[0]=mdp0 | ||
| + | liste_rep_ftp[0]="/ | ||
| + | serveur_sql[0]=sql.free.fr | ||
| + | utilisateur_sql[0]=login0 | ||
| + | mdp_sql[0]=mdp0 # mot de passe mysql | ||
| + | liste_bases_de_donnees[0]="" | ||
| + | # Fin du bloc à paramétrer | ||
| + | |||
| + | # Début du bloc à paramétrer | ||
| + | nom_du_site[1]=mon_site.org | ||
| + | script_http[1]= | ||
| + | rep_sav_ftp[1]=$HOME/ | ||
| + | rep_sav_sql[1]= | ||
| + | serveur_ftp[1]=ftp.mon_site.org | ||
| + | utilisateur_ftp[1]=login1 | ||
| + | mdp_ftp[1]=mdp1 | ||
| + | liste_rep_ftp[1]="/" | ||
| + | serveur_sql[1]= | ||
| + | utilisateur_sql[1]= | ||
| + | mdp_sql[1]= | ||
| + | liste_bases_de_donnees[1]="" | ||
| + | # Fin du bloc à paramétrer | ||
| + | |||
| + | |||
| + | |||
| + | sauver(){ | ||
| + | # | ||
| + | if [ " | ||
| + | echo Exécution du script de ${nom_du_site[$i]} | ||
| + | links -dump ${script_http[$i]} | ||
| + | } fi | ||
| + | |||
| + | # | ||
| + | if [ " | ||
| + | echo | ||
| + | echo Sauvegarde FTP de ${nom_du_site[$i]} | ||
| + | echo | ||
| + | if [ ! -e " | ||
| + | mkdir -p " | ||
| + | } | ||
| + | else { | ||
| + | if [ " | ||
| + | mv " | ||
| + | mkdir -p " | ||
| + | } fi | ||
| + | } fi | ||
| + | for rep_ftp in ${liste_rep_ftp[$i]}; | ||
| + | lftp ftp:// | ||
| + | done | ||
| + | } fi | ||
| + | |||
| + | # | ||
| + | if [ " | ||
| + | echo | ||
| + | echo Sauvegarde SQL de ${nom_du_site[$i]} | ||
| + | echo | ||
| + | if [ ! -e " | ||
| + | mkdir -p " | ||
| + | } | ||
| + | else { | ||
| + | if [ " | ||
| + | mv " | ||
| + | mkdir -p " | ||
| + | } fi | ||
| + | } fi | ||
| + | cd ${rep_sav_sql[$i]} # on se place dans le repertoire ou l'on veut sauvegarder les bases | ||
| + | if [ " | ||
| + | wget http:// | ||
| + | } | ||
| + | else { | ||
| + | j=0 | ||
| + | for j in ${liste_bases_de_donnees[$i]}; | ||
| + | mysqldump -h${serveur_sql[$i]} -u${utilisateur_sql[$i]} -p${mdp_sql[$i]} $j > ${j}_`date +%D | sed ' | ||
| + | tar jcf ${j}_`date +%D | sed ' | ||
| + | rm ${j}_`date +%D | sed ' | ||
| + | done | ||
| + | } fi | ||
| + | } fi | ||
| + | |||
| + | } | ||
| + | |||
| + | date_debut_script=" | ||
| + | |||
| + | # On vérifie que lftp, links et mysql-client sont bien installés | ||
| + | if [ ! -e "/ | ||
| + | echo "lftp n'est pas installé. Ce script va l' | ||
| + | sudo apt-get install lftp | ||
| + | } fi | ||
| + | if [ ! -e "/ | ||
| + | echo "links n'est pas installé. Ce script va l' | ||
| + | sudo apt-get install links | ||
| + | } fi | ||
| + | if [ ! -e "/ | ||
| + | echo " | ||
| + | sudo apt-get install mysql-client* | ||
| + | } fi | ||
| + | |||
| + | |||
| + | # On attend d' | ||
| + | while ! ping google.com -A -c1 |grep "1 received" | ||
| + | echo en attente de connexion internet... | ||
| + | sleep 60 | ||
| + | done | ||
| + | |||
| + | |||
| + | # On met à jour les fichiers log | ||
| + | if [ ! -e " | ||
| + | mkdir -p $rep_log | ||
| + | echo $(date +%F_%H-%M-%S) > | ||
| + | } fi | ||
| + | if [ "$(cat $rep_log/ | ||
| + | | ||
| + | echo $(date +%F_%H-%M-%S) > | ||
| + | } fi | ||
| + | |||
| + | |||
| + | # On fait toutes les sauvegardes | ||
| + | len=${# | ||
| + | i=0 | ||
| + | while [ " | ||
| + | do | ||
| + | sauver | ||
| + | let "i = $i + 1" | ||
| + | done | ||
| + | |||
| + | echo La sauvegarde des sites internet a commencée $date_debut_script et s\'est terminée le $(date +%F) à $(date +%H:%M:%S) >> | ||
| + | echo La sauvegarde des sites internet a commencée $date_debut_script et s\'est terminée le $(date +%F) à $(date +%H:%M:%S) | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Puis rendez ce fichier exécutable | ||
| + | |||
| + | chmod +x nom_que_l_on_veut.sh | ||
| + | |||
| + | Il ne vous reste plus qu'à l' | ||
| + | |||
| + | |||
| + | ==== Script PHP de création d'un fichier .sql.gz ==== | ||
| + | |||
| + | Si le serveur mysql de votre site internet n'est pas accessible de l' | ||
| + | |||
| + | Vous pouvez créer un script php (ex : sauvegarder_mysql.php) qui aura pour fonction de sauver la BDD MySQL dans un fichier date_heure.sql.gz sur le serveur du site. | ||
| + | |||
| + | Ce script php sera exécuté lors de la sauvegarde en spécifiant son adresse dans la variable script_http[numéro] du script de sauvegarde (ci-dessus). | ||
| + | |||
| + | Puis, le fichier date_heure.sql.gz sera rappatrié en local dans votre répertoire de sauvegarde avec la sauvegarde des fichiers via lftp. | ||
| + | |||
| + | Par ex, sauvegarder_mysql.php pourrait ressembler à ça : | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | $mysql_server = ""; | ||
| + | $mysql_login = ""; | ||
| + | $mysql_passwd = ""; | ||
| + | $mysql_bdd = ""; | ||
| + | |||
| + | $date_actu = date(' | ||
| + | |||
| + | echo " | ||
| + | system(" | ||
| + | system(" | ||
| + | system(" | ||
| + | echo " | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | ===== Automatisation ===== | ||
| + | |||
| + | Faites appeler ce script automatiquement à intervalle régulière par [[cron]] ou [[fcron]] | ||
| + | |||
| + | Vérifiez de temps en temps que le log de sauvegarde. Si celle ci ne s'est pas faite, tentez la manuellement, | ||
| + | |||
| + | |||
| + | === Avec Cron === | ||
| + | |||
| + | En tant que root (administrateur), | ||
| + | * / | ||
| + | * / | ||
| + | * / | ||
| + | * / | ||
| + | |||
| + | === Avec Fcron === | ||
| + | |||
| + | Si votre ordinateur n'est pas allumé en permanence, il vaut mieux utiliser [[fcron]], car cron ne s' | ||
| + | |||
| + | Installer fcront : [[apt:// | ||
| + | Puis configurez la sauvegarde : | ||
| + | | ||
| + | Ex : pour faire une sauvegarde 2 fois par semaine : | ||
| + | | ||
| + | Faire CTRL + O pour enregistrer puis CTRL + X pour quitter | ||
