#1 Le 11/12/2009, à 15:08
- b-1983
[résolu] Sauvegarde base de donnée MySQL + répertoire
Bonjour. je suis actuellement en train de gérer localement un petit blog personnel avec LAMP. J'aimerais, à des fins de sécurité, pouvoir sauvegarder un répertoire du site (/var/www/blog/) et son contenu vers un autre disque dur, ainsi que la base de donnée associée à ce blog.
J'aimerais donc savoir s'il est possible de faire ça en une seule ligne de commande? Le but est de lancer la commande quotidiennement et de garder une sauvegarde rapidement et simplement du site en cas de problème ou de réinstallation.
Toute aide sera la bienvenue
Merci d'avance
Dernière modification par b-1983 (Le 11/12/2009, à 20:24)
À Rome, fais comme les Romains.
Hors ligne
#2 Le 11/12/2009, à 15:14
- llwynrt
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
bonjour
un petit script qui semble correspondre à tes besoins : http://prendreuncafe.com/blog/post/2006/01/22/382-programmer-ses-backups-dotclear-grace-a-un-script-bash-et-cron
c'est pour dotclear, mais facile à adapter
Marie-Lyse
Les erreurs Windows, c'est un peu comme les rêves, il faut savoir les interpréter, parfois ça peut vouloir dire quelque chose !
Hors ligne
#3 Le 11/12/2009, à 15:35
- sputnick
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
http://www.sputnick-area.net/ftp/downloads/back-lftp.bash
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 11/12/2009, à 15:37
- b-1983
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
Le script a en effet l'air de correspondre à mes besoins. Seulement, j'aimerais ne pas utiliser l'envoi de mail, juste récupérer le dossier /var/www/site/ et la base de donnée.
Mes compétences en script shell étant en dessous du niveau de la mer, je me demandais comment remplacer l'envoie par email par un simple enregistrement?
Merci pour ton aide en tout cas, ça m'aide à comprendre un peu comment faire, et ça me rassure puisque ça veut dire que c'est possible
@ sputnik, moi rien comprendre :s
Dernière modification par b-1983 (Le 11/12/2009, à 15:39)
À Rome, fais comme les Romains.
Hors ligne
#5 Le 11/12/2009, à 15:45
- llwynrt
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
le script est bien commenté !
tu enlèves cette partie
echo "Envoi de la sauvegarde MySQL par email à $MAIL_BACKUP..."
echo $MAIL_MESSAGE | mutt -s $MAIL_SUBJECT -a $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz $MAIL_TO
et tu peux aussi enlever celle ci qui ne sert plus à rien du coup :
MAIL_TO="<votre_adresse_email>"
MAIL_SUBJECT="[$CURRENTDATE] Sauvegarde SQL"
MAIL_MESSAGE="En pièce jointe la base de données en date du $CURRENTDATE"
Les erreurs Windows, c'est un peu comme les rêves, il faut savoir les interpréter, parfois ça peut vouloir dire quelque chose !
Hors ligne
#6 Le 11/12/2009, à 16:11
- b-1983
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
Ca me donne ça (et j'ose pas l'arrêter)
Export de la base de données...
touch: ne peut faire un touch sur `/home/b1983/sauvegarde/': Aucun fichier ou dossier de ce type
touch: ne peut faire un touch sur `>/sql20091211.sql': Aucun fichier ou dossier de ce type
/home/b-1983/Bureau/sauvegarde.sh: line 18: $DIR_BACKUP/$DBDUMP_FILENAME : redirection ambiguë
Compression de l'export...
tar: Suppression de « / » au début des noms des membres
tar: /home/b-1983/Bureau/< : fichier modifié pendant sa lecture
tar: /home/b-1983 : fichier modifié pendant sa lecture
tar: /home/b1983/sauvegarde : la fonction stat a échoué: Aucun fichier ou dossier de ce type
tar: >/sql20091211.sql.tar.gz : la fonction stat a échoué: Aucun fichier ou dossier de ce type
À Rome, fais comme les Romains.
Hors ligne
#7 Le 11/12/2009, à 16:18
- llwynrt
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
ton nom d'utilisateur, c'est b1983 ou b-1983 ?
touch: ne peut faire un touch sur `/home/b1983/sauvegarde/': Aucun fichier ou dossier de ce type
vérifie que tu ne t'est pas trompé de chemin pour ton home dans la première ligne du script :
HOME="<repertoire_personnel>" # exemple : /home/users/toto
tu peux l'arrêter sans problème.
Les erreurs Windows, c'est un peu comme les rêves, il faut savoir les interpréter, parfois ça peut vouloir dire quelque chose !
Hors ligne
#8 Le 11/12/2009, à 16:34
- b-1983
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
En effet j'avais fait une erreur. Mais maintenant, le terminal s'ouvre et se ferme rapidement, j'ai eu a peine le temps de copier le contenu ;
Export de la base de données...
touch: ne peut faire un touch sur `>/sql20091211.sql': Aucun fichier ou dossier de ce type
/home/b-1983/sauvegarde/sauvegarde.sh: line 18: $DIR_BACKUP/$DBDUMP_FILENAME : redirection ambiguë
Compression de l'export...
tar: Suppression de « / » au début des noms des membres
tar: >/sql20091211.sql.tar.gz : la fonction stat a échoué: Aucun fichier ou dossier de ce type
tar: >/sql20091211.sql : la fonction stat a échoué: Aucun fichier ou dossier de ce type
tar: Exiting with failure status due to previous errors
Création de l'achive globale...
tar: Suppression de « / » au début des noms des membres
tar: >/puc20091211.tar.gz : la fonction stat a échoué: Aucun fichier ou dossier de ce type
tar: > : la fonction stat a échoué: Aucun fichier ou dossier de ce type
tar: < : fichier modifié pendant sa lecture
tar: /home/b-1983/sauvegarde/< : fichier modifié pendant sa lecture
Je met le contenu du script, est-ce que tu peux me dire ou j'ai merdé?
#!/bin/bash
HOME="< /home/b-1983/sauvegarde >" # exemple : /home/users/toto
DIR_BLOG="$HOME< /var/www/site >" # exemple : /public_html/dotclear
DIR_BACKUP="$HOME< /home/b-1983/sauvegarde >" # exemple : /backup
SQL_HOST="<123456>"
SQL_USER="<123456>"
SQL_PASS="<123456>"
SQL_BASE="<123456>"
CURRENTDATE=$(date +%Y%m%d)
DBDUMP_FILENAME="sql$CURRENTDATE.sql"
echo "Export de la base de données..."
touch $DIR_BACKUP/$DBDUMP_FILENAME
mysqldump -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS $SQL_BASE > $DIR_BACKUP/$DBDUMP_FILENAME
echo "Compression de l'export..."
tar czf $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz $DIR_BACKUP/$DBDUMP_FILENAME
echo "Création de l'achive globale..."
tar czf $DIR_BACKUP/puc$CURRENTDATE.tar.gz $DIR_BLOG $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz
echo "Suppression des fichiers tempporaires..."
rm -f $DIR_BACKUP/$DBDUMP_FILENAME
rm -f $DIR_BACKUP/$DBDUMP_FILENAME.tar.gz
echo "Sauvegarde effectuée dans $DIR_BACKUP/puc$CURRENTDATE.tar.gz"
Merci beaucoup beaucoup beacoup pour ton aide et ta patience!
À Rome, fais comme les Romains.
Hors ligne
#9 Le 11/12/2009, à 16:47
- llwynrt
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
HOME="< /home/b-1983/sauvegarde >" # exemple : /home/users/toto
DIR_BLOG="$HOME< /var/www/site >" # exemple : /public_html/dotclear
DIR_BACKUP="$HOME< /home/b-1983/sauvegarde >" # exemple : /backup
mets plutôt :
HOME="/home/b-1983" # exemple : /home/users/toto
DIR_BLOG="/var/www/site" # exemple : /public_html/dotclear
DIR_BACKUP="$HOME/sauvegarde" # exemple : /backup
au lieu de double-cliquer sur le script pour le lancer, lance un terminal et tape :
sh /home/b-1983/Bureau/sauvegarde.sh
le terminal restera ouvert et tu pourras facilement voir ce qui ce passe
Les erreurs Windows, c'est un peu comme les rêves, il faut savoir les interpréter, parfois ça peut vouloir dire quelque chose !
Hors ligne
#10 Le 11/12/2009, à 16:51
- sputnick
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
STOP !
Mauvaise idée sh script ca foirera
Il faut faire un chmod +x /home/b-1983/Bureau/sauvegarde.shou bien taper bash /home/b-1983/Bureau/sauvegarde.sh
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#11 Le 11/12/2009, à 17:14
- b-1983
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
Bonne et mauvaise nouvelle. Le répertoire /site est bien sauvegardé.
Par contre, la base de donnée est vide (et en plus le chemin d'accès pour y arriver est pas normal, il répète les /home/b-1983/sauvegarde)
Je m'explique. Le fichier compressé dans /home/b-1983/sauvegarde se nomme puc20091211.tar.gz une fois décompressé contient :
- le dossier /site
- un dossier /home/b-1983/sauvegarde/ qui contient un fichier sql20091211.sql.tar.gz
En décompressant cette archive, j'ai un autre dossier /home/b-1983/sauvegarde/home/b-1983/sauvegarde dans lequel se trouve la base sql. Sauf qu'elle est vide.
Donc, le chemin d'accès (une fois les dossiers compressés décompressés) à la base (vide) est ;
/home/b-1983/sauvegarde/puc20091211/home/b-1983/sauvegarde/home/b-1983/sauvegarde
Comment faire pour que la base de donnée soit directement dans /home/b-1983/sauvegarde (et si possible soit pleine ^^) ?
EDIT : j'ai trouvé l'erreur qui faisait qu'elle était bvide, c'était les "<>" qu'il fallait enlever. Par contre, c'est toujours perdu dans un sous dossier compressé d'un sous-dossier d'un autre sous-dossier d'un autre sous... Enfin c'est perdu au fin fond d'un sous dossier
Dernière modification par b-1983 (Le 11/12/2009, à 17:30)
À Rome, fais comme les Romains.
Hors ligne
#12 Le 11/12/2009, à 19:42
- b-1983
Re : [résolu] Sauvegarde base de donnée MySQL + répertoire
Bon, finalement en me tirant un peu les doigts, j'ai réussi à faire exactement ce que je voulais, en version hyper simple vu que j'ai pas les compétences pour faire plus compliqué (donc c'est moins drôle mais ça marche à la perfection )
#!/bin/sh
UTILISATEUR="nom-utilisateur-sql"
PASSWORD="mot-de-passe-sql"
BASE_SQL="nom-de-ma-base"
# Je dumpe la base MySQL dans le répertoire ~/backup
mysqldump --opt -u $UTILISATEUR -p$PASSWORD $BASE_SQL > /home/b-1983/backup/nom-de-ma-base.sql
# Je copie le repertoire /var/www/site dans ~/backup
cp -R /var/www/site/ /home/b-1983/backup
Le seul truc qu'il faut pour que ça fonctionne bien, c'est d'avoir le répertoire ~/backup déjà créé, sinon le script créé le répertoire, y colle le contenu du répertoire /var/www/site/ et ne sait plus dumper la base de donnée.
A chaque fois qu'on lance le script, ce qu'il y avait avant est remplacé par ce qu'il y a de nouveau.
Donc voila, pour moi c'est parfait !
Merci encore à tous pour votre aide super rapide et pour votre patience!
À Rome, fais comme les Romains.
Hors ligne