Jump to content
Alexandre Carette

[TUTO] Sauvegarde automatique envoi à distance de Prestashop -- BDD (matin, midi, soir) + Fichiers -

Recommended Posts

Prérequis:

Serveur ou se situe prestashop // Ubuntu 14.04 (serveur 1)
Serveur de sauvegarde // Ubuntu 14.04

Objectif:

Obtenir 3 sauvegardes de la base SQL "prestashop": matin.sql midi.sql soir.sql
Obtenir 1 sauvegarde de tout le dossier prestashop: presta.zip
Envoyer chaque jour un dossier Nom_du_jour_de_la_semaine_nom_du_site vers un serveur distant en ssh comprenant les fichiers SQL et le ZIP du prestashop

 

Outils utilisés:

zip

mysqldump

scp

cron

Résultat:

Sur notre serveur de sauvegarde nous avons 7 dossiers (donc 7 sauvegardes) "Jour_de_la_semaine_nom_du_site" contenant 3 sql et un zip. Les sauvegardes sont écrasés selon le jour

Serveur à sauvegarder

On se met en root avec

su

#on installe zip

apt-get install zip

#on se place dans le home

cd /home

# on crée un répertoire qui va accueillir nos scripts

mkdir scripts
cd /home/scripts

0) Pour permettre l'envoie en SCP on crée une clef SSH

ssh-keygen -t rsa

On envoit la clef vers le serveur de sauvegarde

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip_du_serveur_de_sauvegarde

On donne le mot de passe du root du serveur de sauvegarde

 

1) Création des scripts bash

Pour commencer on va créer 3 scripts bash
 

nano sqldump-matin.sh
#!/bin/bash
# Indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier
# En règle générale, les "#" servent à mettre en commentaire le texte qui suit comme ici
echo Sauvegarde base de donnée du matin
 
# Database credentials
# seul le root peut utiliser mysqldump
 user="root"
 password="password_du_root_sql"
 db_name="nom_de_la_base"
# backup_path par defaut: var/www/html/prestashop
 backup_path="chemin_absolue_du_repertoire_de_prestashop"
 date="matin"
 
# Set default file permissions
 umask 177
 
# Dump database into SQL file
 mysqldump --user=$user --password=$password $db_name > /$backup_path/$date.sql
 
exit 0

ctrl + x -> save
 

nano sqldump-midi.sh
#!/bin/bash
# Indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier
# En règle générale, les "#" servent à mettre en commentaire le texte qui suit comme ici
echo Sauvegarde base de donnée du matin
 
# Database credentials
# seul le root peut utiliser mysqldump
 user="root"
 password="password_du_root_sql"
 db_name="nom_de_la_base"
# backup_path par defaut: var/www/html/prestashop
 backup_path="chemin_absolue_du_repertoire_de_prestashop"
 date="midi"
 
# Set default file permissions
 umask 177
 
# Dump database into SQL file
 mysqldump --user=$user --password=$password $db_name > /$backup_path/$date.sql
 
exit 0

ctrl + x -> save
 

nano sqldump-soir.sh
#!/bin/bash
# Indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier
# En règle générale, les "#" servent à mettre en commentaire le texte qui suit comme ici
echo Sauvegarde base de donnée du matin
 
# Database credentials
# seul le root peut utiliser mysqldump
 user="root"
 password="password_du_root_sql"
 db_name="nom_de_la_base"
# backup_path par defaut: var/www/html/prestashop
 backup_path="chemin_absolue_du_repertoire_de_prestashop"
 date="soir"
 
# Set default file permissions
 umask 177
 
# Dump database into SQL file
 mysqldump --user=$user --password=$password $db_name > /$backup_path/$date.sql
 
exit 0

ctrl + x -> save

On rend les scripts sql executable
 

chmod +x sqldump-matin.sh
chmod +x sqldump-midi.sh
chmod +x sqldump-soir.sh

Les scripts de sauvegarde journalière de la base de donnée sont crées
on crée un script qui va zipper le répertoire prestashop et envoyer le tout sur l'autre serveur
 

nano backup-day.sh
#!/bin/bash
# Indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier
# En règle générale, les "#" servent à mettre en commentaire le texte qui suit comme ici
echo Sauvegarde de la journée 
 
# Database credentials
 site="nom_du_site"

# backup_path par defaut: var/www/html/prestashop
 backup_path="chemin_absolue_du_repertoire_de_prestashop"
 date=`date +%A`
 ip="adresse_ip_du_serveur_distant"
 user="root"
 
#on se met sur le bon repertoire
cd /$backup_path

#on crée un dossier au jour de la semaine
mkdir $date"-"$site

#on déplace les sauvegardes SQL
mv matin.sql $date"-"$site
mv midi.sql $date"-"$site
mv soir.sql $date"-"$site

#on zip le repertoire prestashop
zip -r presta.zip /$backup_path

#on déplace le zip dans le repertoire
mv presta.zip $date"-"$site

#on envoit le repertoire via scp vers le home/user du serveur de sauvegarde 
scp -r $date"-"$site $user@$ip:/home/user

#on efface le repertoire du serveur 1
rm -r $date"-"$site
echo Sauvegarde terminée
exit 0

ctrl + x -> save
 

chmod +x backup-day.sh

2) Création des tâches CRON
 

crontab -e
# Backup My SQL
 
# m h  dom mon dow   command
 
#sauvegarde du matin à 7h50
50 7 * * * /home/scripts/sqldump-matin.sh
 
#sauvegarde du midi à 15h50
50 15 * * * /home/scripts/sqldump-midi.sh
 
#sauvegarde du soir à 22H
* 22 * * * /home/scripts/sqldump-soir.sh
 
# Sauvegarde journalière à 23H15
15 23 * * * /home/scripts/backup-day.sh

On rédemarre CRON
 

service cron restart
Edited by Alexandre Carette (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More