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 22/09/2008, 14:12] – topazz | sauvegarder_un_site [Le 21/10/2025, 21:10] (Version actuelle) – vétuste / à supprimer : les scripts ont leur place sur des forges git, pas des wiki, et idéalement audités par des pairs, pour être maintenus krodelabestiole | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| ---- | ---- | ||
| Ligne 9: | Ligne 9: | ||
| ====== Sauvegarder un ou des sites internet via FTP et leurs bases de données MySQL ====== | ====== Sauvegarder un ou des sites internet via FTP et leurs bases de données MySQL ====== | ||
| + | |||
| + | |||
| + | |||
| Ligne 16: | Ligne 19: | ||
| 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. | 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, | + | 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 | + | Les sauvegardes ftp vont écraser les fichiers |
| + | 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 | Les sauvegardes MySQL créent un fichier date_heure.tar.bz2 ou date_heure.sql.gz pour les sites perso de free | ||
| Ligne 25: | Ligne 29: | ||
| - | Vérifiez que [[apt:// | + | Vérifiez que [[apt:// |
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== Installation ===== | ===== Installation ===== | ||
| Ligne 34: | Ligne 45: | ||
| < | < | ||
| #!/bin/bash | #!/bin/bash | ||
| - | # Version 0.1 | + | # 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 |
| - | # ATTENTION : lftp et mysql-server doivent être installés | + | # FONCTIONNALITÉS : |
| - | + | ||
| - | # FONCTIONNALITÉS : | + | |
| # - Sauvegarde des fichiers distants via FTP | # - Sauvegarde des fichiers distants via FTP | ||
| # - Sauvegarde des bases de données MySQL distantes via mysqldump ou http:// | # - Sauvegarde des bases de données MySQL distantes via mysqldump ou http:// | ||
| # - Sauvegarde de plusieurs sites | # - 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' | |
| - | + | ||
| - | #Variables à renseigner : copiez collez le bloc en modifiant le numéro entre crochets, dans l' | + | |
| # Début du bloc à paramétrer | # Début du bloc à paramétrer | ||
| nom_du_site[0]=login0.free.fr | nom_du_site[0]=login0.free.fr | ||
| - | rep_sav_ftp[0]=$HOME/ | + | script_http[0]= # adresse http d'un fichier (php par exemple) à appeler |
| + | rep_sav_ftp[0]=$HOME/ | ||
| rep_sav_sql[0]=$HOME/ | rep_sav_sql[0]=$HOME/ | ||
| serveur_ftp[0]=ftpperso.free.fr | serveur_ftp[0]=ftpperso.free.fr | ||
| utilisateur_ftp[0]=login0 | utilisateur_ftp[0]=login0 | ||
| mdp_ftp[0]=mdp0 | mdp_ftp[0]=mdp0 | ||
| - | rep_ftp[0]=/ | + | liste_rep_ftp[0]="/rep / |
| serveur_sql[0]=sql.free.fr | serveur_sql[0]=sql.free.fr | ||
| utilisateur_sql[0]=login0 | utilisateur_sql[0]=login0 | ||
| mdp_sql[0]=mdp0 # mot de passe mysql | mdp_sql[0]=mdp0 # mot de passe mysql | ||
| - | liste_bases_de_donnees[0]= | + | liste_bases_de_donnees[0]="" |
| # Fin du bloc à paramétrer | # Fin du bloc à paramétrer | ||
| # Début du bloc à paramétrer | # Début du bloc à paramétrer | ||
| - | nom_du_site[1]=mon_site.org | + | nom_du_site[1]=mon_site.org |
| - | rep_sav_ftp[1]=$HOME/ | + | script_http[1]= |
| - | rep_sav_sql[1]= | + | rep_sav_ftp[1]=$HOME/ |
| - | serveur_ftp[1]=ftp.mon_site.org | + | rep_sav_sql[1]= |
| - | utilisateur_ftp[1]=login1 | + | serveur_ftp[1]=ftp.mon_site.org |
| - | mdp_ftp[1]=mdp1 | + | utilisateur_ftp[1]=login1 |
| - | rep_ftp[1]=/ # répertoire sur le serveur ftp à sauvegarder. Mettre simplement / pour sauver le site en entier | + | mdp_ftp[1]=mdp1 |
| - | serveur_sql[1]= | + | liste_rep_ftp[1]="/" |
| - | utilisateur_sql[1]= | + | serveur_sql[1]= |
| - | mdp_sql[1]= | + | utilisateur_sql[1]= |
| - | liste_bases_de_donnees[1]= | + | mdp_sql[1]= |
| + | liste_bases_de_donnees[1]="" | ||
| # Fin du bloc à paramétrer | # Fin du bloc à paramétrer | ||
| Ligne 79: | Ligne 91: | ||
| sauver(){ | sauver(){ | ||
| + | # | ||
| + | if [ " | ||
| + | echo Exécution du script de ${nom_du_site[$i]} | ||
| + | links -dump ${script_http[$i]} | ||
| + | } fi | ||
| + | |||
| # | # | ||
| if [ " | if [ " | ||
| Ligne 84: | Ligne 102: | ||
| echo Sauvegarde FTP de ${nom_du_site[$i]} | echo Sauvegarde FTP de ${nom_du_site[$i]} | ||
| echo | echo | ||
| - | if [ ! -e " | + | if [ ! -e " |
| mkdir -p " | mkdir -p " | ||
| + | } | ||
| + | else { | ||
| + | if [ " | ||
| + | mv " | ||
| + | mkdir -p " | ||
| + | } fi | ||
| } fi | } fi | ||
| - | lftp ftp:// | + | for rep_ftp in ${liste_rep_ftp[$i]}; |
| + | lftp ftp:// | ||
| + | done | ||
| } fi | } fi | ||
| Ligne 95: | Ligne 121: | ||
| echo Sauvegarde SQL de ${nom_du_site[$i]} | echo Sauvegarde SQL de ${nom_du_site[$i]} | ||
| echo | echo | ||
| - | if [ ! -e " | + | if [ ! -e " |
| mkdir -p " | mkdir -p " | ||
| + | } | ||
| + | else { | ||
| + | if [ " | ||
| + | mv " | ||
| + | mkdir -p " | ||
| + | } fi | ||
| } fi | } fi | ||
| cd ${rep_sav_sql[$i]} # on se place dans le repertoire ou l'on veut sauvegarder les bases | cd ${rep_sav_sql[$i]} # on se place dans le repertoire ou l'on veut sauvegarder les bases | ||
| if [ " | if [ " | ||
| - | wget http:// | + | wget http:// |
| } | } | ||
| else { | else { | ||
| Ligne 114: | Ligne 146: | ||
| } | } | ||
| + | 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=${# | len=${# | ||
| i=0 | i=0 | ||
| Ligne 123: | Ligne 190: | ||
| done | 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 | exit 0 | ||
| Ligne 133: | Ligne 202: | ||
| Il ne vous reste plus qu'à l' | 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 ===== | ===== Automatisation ===== | ||
| Ligne 138: | Ligne 236: | ||
| Faites appeler ce script automatiquement à intervalle régulière par [[cron]] ou [[fcron]] | 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 | ||
