Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/12/2009, à 16: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 smile
Merci d'avance

Dernière modification par b-1983 (Le 11/12/2009, à 21:24)


À Rome, fais comme les Romains.

Hors ligne

#2 Le 11/12/2009, à 16: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, à 16: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, à 16: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 smile

@ sputnik, moi rien comprendre :s

Dernière modification par b-1983 (Le 11/12/2009, à 16:39)


À Rome, fais comme les Romains.

Hors ligne

#5 Le 11/12/2009, à 16: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, à 17: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, à 17: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, à 17: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, à 17: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, à 17: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, à 18: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 hmm

Dernière modification par b-1983 (Le 11/12/2009, à 18:30)


À Rome, fais comme les Romains.

Hors ligne

#12 Le 11/12/2009, à 20: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 tongue )

#!/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