Script de sauvegarde site web et base de donnée

Bonjour à tous,

j’ai un script qui sauvegarde un espace web ainsi que ca base de donnée.

fguillot@fguillot-desktop:~$ cat /backup/script-bdd-site
#!/bin/sh
  # sauvegarde des bases de donné hebdommadaire
  # A modifier:
  USER=*******
  PASS=***********
  DESTINATION=/backup/mysql/
  DESTINATION2=/backup/site/
  DOSSIER=/media/public/*********/Informatique
  DATE=`date +%Y-%m-%d`
  TIME=`date +%H-%M`
  DAY=`date +%d`
  DEL=`TZ=CST+24 date +%Y-%m-%d`

  # backup de tout les jours prix de revient
  mysqldump -u $USER --password=$PASS pdr | gzip > $DESTINATION/pdr-$TIME.$DATE.sql.gz
  zip -r /backup/site/site-pdr-$TIME.$DATE.zip /var/www/prixderevient
#Backup tout les jour reclamation
 mysqldump -u $USER --password=$PASS qualite | gzip > $DESTINATION/qualite-$TIME.$DATE.sql.gz
  zip -r /backup/site/site-qualite-$TIME.$DATE.zip /var/www/qualite
#Backup  rupture
 mysqldump -u $USER --password=$PASS rupture | gzip > $DESTINATION/rupture-$TIME.$DATE.sql.gz
  zip -r /backup/site/site-rupture-$TIME.$DATE.zip /var/www/rupture

#repeter les 2 lignes prédentes autant de fois que de bases à auvegarder

  # efface le backup de la veille
  rm -rf $DESTINATION/*.$DEL.sql.gz
  rm -rf $DESTINATION2/*.$DEL.zip


#copie du backup bdd et site sur le serveur j

cp /backup/mysql/*-$TIME.$DATE.sql.gz /media/public/**********/Informatique$DESTINATION
cp /backup/site/*-$TIME.$DATE.zip /media/public/Direction\**************/Informatique$DESTINATION2


rm -rf /media/public/***************/Informatique$DESTINATION$DEL.sql.gz
rm -rf /media/public/******************/Informatique$DESTINATION2$DEL.zip

Le script fonctionne presque, il ne réalise pas la suppression.
Dans mon espace de sauvegarde j’ai bien tout les sauvegarde toujours à la même heure.

Normalement le script doit supprimer la précédente sauvegarder qui à été fait le jour d’avant à la même heure.

Quel est mon erreur ?

Merci

guigui69

Ce n’est pas que ton fil soit mal placé mais je pense que tu pourrais poser la question aussi dans la section “programmation”.

Ah oui, j’ai loupé la section programmation, si un modérateur pourrait déplacer mon post.

guigui69

non, je ne dépalce pas, à toi de le “doubler” sur “programmation”.
Je laisse celui-là en place car il n’est vraiment pas mal placé.

Pourquoi ne pas commencer par insérer au moins un fichier de logs à consulter après lancement, histoire de répérer les erreurs ?

Et puis, pourquoi du rm récursif de fichiers ?

rm -rf /media/public/***************/Informatique$DESTINATION$DEL.sql.gz
rm -rf /media/public/******************/Informatique$DESTINATION2$DEL.zip

Bon, je n’ai pas tout lu mais quand on scripte, il faut toujours prévoir un fichier de logs, même quand on est guru :smt006

[quote=“pendrifter”]Et puis, pourquoi du rm récursif de fichiers ?

rm -rf /media/public/***************/Informatique$DESTINATION$DEL.sql.gz
rm -rf /media/public/******************/Informatique$DESTINATION2$DEL.zip
[/quote]
Ça c’est vrai, bien vu. J’ajouterai même qu’il n’est utile de 'f’orcer.

[quote]
Ça c’est vrai, bien vu. J’ajouterai même qu’il n’est utile de 'f’orcer.[/quote]

Certes ! :mrgreen:
J’y ai moins fait attention parce que j’ai tendance à 'f’orcer aussi. :unamused:

cette ligne m'intrigue, notamment le CST+24. Je suppose que CST devrait être la variable contenant la date d'un jour bien précis ou un timestamp ? A aucun moment cette variable n'est défini, et quand on l'utilise il faut mettre le signe $ devant pour dire qu'on utilise le contenu de la variable.

Ta variable DATE, tu peux l'initialiser avec cela : 
[code]DATE=`date +%F`[/code]qui donnera le même résultat. Voir utiliser la nouvelle méthode pour attribuer le résultat d'une commande à une variable :
[code]DATE=$(date +%F)[/code]

Sinon, voici un script que j'utilise pour faire plus ou moins la meme chose que toi :[code]#!/bin/bash                                                                                                                  
cd backup_sql                                                                                                                
USER="truc"                                           
PASS="machin"                                                                                                              
BASES="$(mysql -u $USER  -p$PASS -Bse 'show databases')"                                                                     
for db in $BASES                                                                                                             
do
if [ $db != 'information_schema' ]
then FICHIER_SORTIE="$db-$(date +"%F_%H-%M-%S").sql"
mysqldump -u $USER -p$PASS $db > $FICHIER_SORTIE
gpg --yes -r truc -e -o $db.gpg $FICHIER_SORTIE
gzip $FICHIER_SORTIE
mv $FICHIER_SORTIE.gz dump-day/
ftp -v -n mon.ftp.tt <<SCRIPT
user truc pass
ascii
cd backup
put $db.gpg
bye
SCRIPT
fi
done
[/code]en plus j'ai un export vers ftp distant préalablement chiffré avec gpg

cette ligne m’intrigue, notamment le CST+24. Je suppose que CST devrait être la variable contenant la date d’un jour bien précis ou un timestamp ? A aucun moment cette variable n’est défini, et quand on l’utilise il faut mettre le signe $ devant pour dire qu’on utilise le contenu de la variable.

Ta variable DATE, tu peux l’initialiser avec cela :

DATE=`date +%F`qui donnera le même résultat. Voir utiliser la nouvelle méthode pour attribuer le résultat d’une commande à une variable :

Sinon, voici un script que j’utilise pour faire plus ou moins la meme chose que toi :#!/bin/bash cd backup_sql USER="truc" PASS="machin" BASES="$(mysql -u $USER -p$PASS -Bse 'show databases')" for db in $BASES do if [ $db != 'information_schema' ] then FICHIER_SORTIE="$db-$(date +"%F_%H-%M-%S").sql" mysqldump -u $USER -p$PASS $db > $FICHIER_SORTIE gpg --yes -r truc -e -o $db.gpg $FICHIER_SORTIE gzip $FICHIER_SORTIE mv $FICHIER_SORTIE.gz dump-day/ ftp -v -n mon.ftp.tt <<SCRIPT user truc pass ascii cd backup put $db.gpg bye SCRIPT fi done en plus j’ai un export vers ftp distant préalablement chiffré avec gpg

Merci pour tout ces réponses.

  • Comment faire pour avoir des logs avec mon script?
  • Je regarde l’histoire de récursivité.
  • le code [quote]DEL=TZ=CST+24 date +%Y-%m-%d[/quote] me retourne la date hier pour supprimer les précédentes sauvegardes.

Merci

guigui69