Comment creer une sauvegarde quotidienne d'un dossier? (debian)

Comment creer une sauvegarde quotidienne d'un dossier? (debian) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-07-2007 à 15:51:06    

Bonjour à tous,
 
je viens de mettre en place un site web sur un debian et je cherche un script pour effectuer une sauvegarde quotidienne, le probleme est que je suis nul pour ca :(
 
Voila ce que j'aimerais faire:
 
Sauvegarder le dossier /var/www et /var/lib/mysql toutes les nuits à 3 heures du matin dans le dossier /tmp/backup_site en nommant le fichier "backup_site_Jour/Mois/Année.tar.gz" et "backup_BDD_Jour/Mois/année.tar.gz"
 
Si quelqu'un pouvait m'aider ca serait genial, ou des infos, ou des indices.
 
Merci beaucoup.


Message édité par raised le 05-07-2007 à 15:51:42
Reply

Marsh Posté le 05-07-2007 à 15:51:06   

Reply

Marsh Posté le 05-07-2007 à 15:52:22    

evite de sauvegarde les fichiers binaire de mysql utilise mysqldump et sauvegarde les dump sql c'est beaucoup mieux a mon avis.


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 05-07-2007 à 16:11:06    

un script dans la crontab et hop, ca roule :)


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 05-07-2007 à 16:17:08    

Avec rsync ;)


---------------
Be the one with the flames.
Reply

Marsh Posté le 05-07-2007 à 16:19:23    

Voila ce que j'ai mis en place pour faire ça sur mon serveur. Ca fait une grosse archive que le robot foue ensuite sur bande.
 

Citation :


#!/bin/bash -a
dbUser=user
dbPasswd=passwd
pathGene=/var/partageSamba/archives
log=/var/log/makeArchive
emailAdmin=monEmail
#       Epuration du répertoire de sauvegarde
echo    "-----------------------------------------------------------" > $log
echo    "       Prétraitements                  DEBUT :"$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "-----------------------------------------------------------" >> $log
if test -d $pathGene
then
        echo    "==> Le répertoire de génération existe" >> $log
        echo    "====> Epuration" >> $log
        rm -rf $pathGene/*.dump >> $log
        rm -rf $pathGene/*.bz2 >> $log
else
        echo    "==> Le réperoitre de génération n'existe pas" >> $log
        echo    "====> Création" >> $log
        mkdir -p $pathGene >> $log
fi
echo    "-----------------------------------------------------------" >> $log
echo    "       Prétraitements                  FIN : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "-----------------------------------------------------------" >> $log
echo    "-----------------------------------------------------------" >> $log
echo    "       Sauvegardes                     DEBUT : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "-----------------------------------------------------------" >> $log
# Sauvegarde des données en base pour  mantis
echo    "==> Mantis bugratcker : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "====> Sauvegarde de la base : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
mysqldump -u $dbUser --password=$dbPasswd bugtracker > $pathGene/$(date +%Y%m%d%H%M)_bugtracker.dump
# Sauvegarde des données en base pour  mediawiki
echo    "==> Médiawiki : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "====> Sauvegarde de la base : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
mysqldump -u $dbUser --password=$dbPasswd wikidb > $pathGene/$(date +%Y%m%d%H%M)_wikidb.dump
echo    "====> Sauvegarde des fichiers : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
tar -jcvf $pathGene/$(date +%Y%m%d%H%M)_wiki.bz2 /var/lib/mediawiki1.7 >> $log
echo    "-----------------------------------------------------------" >> $log
echo    "       Sauvegardes                     FIN : "$(date +"%d/%m/%Y %H:%M:%S" ) >> $log
echo    "-----------------------------------------------------------" >> $log


Message édité par VenerZen le 05-07-2007 à 16:20:23

---------------
"L'abus de modération, nuit gravement à la consommation"
Reply

Marsh Posté le 06-07-2007 à 14:07:29    

Voila ce que j'ai fait pour le moment mais ca ne marche pas:
 
dossier du site: /var/www
distribution: Debian
emplacement de la sauvegarde: /tmp/backup_site_web
 

Code :
  1. #Sauvegarde Quotidienne Mambo Seul. Pas ancien site web :
  2. cd /var/www
  3. tar -cvzf /tmp/backup_site_web/sauve_quotidienne_site_`date +%d-%m-%G`.tar.gz `ls /var/www/html/ | grep -v softhelp`
  4. #Sauvegarde Quotidienne des bases de donnees MySQL :
  5. tar -cvzf /tmp/backup_bases_MySQL/sauve_quotidienne_bases_`date +%d-%m-%G`.tar.gz /var/lib/mysql/*


 
Crontab - e: 00 15 * * * /tmp/sauve_quotidienne.sh
 
Pourquoi cela ne marche pas ?
Ya t il des droits a effectuer ?
Un probleme dans mon script ?


Message édité par raised le 06-07-2007 à 14:09:50
Reply

Marsh Posté le 06-07-2007 à 14:11:38    

regardes les logs de cron... à la limite, lances le en debug pour voir...


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 06-07-2007 à 14:26:48    

je n'ai pas de fichier de log dans  /var/log/
 
J'ai fait un crontab -e en ajoutant:
 
28 14 * * * echo "test cron"
 
et rien ne s'affiche a l'heure indiqué, peut etre que le cron n'est pas activé

Reply

Marsh Posté le 06-07-2007 à 14:36:28    

Je lance le script manuellement ./script.sh
 
2 erreurs:
 
./sauve_quotidienne.sh: line 11: unexpected EOF while looking for matching ``'
./sauve_quotidienne.sh: line 12: syntax error: unexpected end of file
 
 
Je ne comprend la signification des erreurs :s
 
 

Reply

Marsh Posté le 06-07-2007 à 14:41:25    

Ton script est mal écrit.

 

(surement une erreur de copier/coller)


Message édité par Riot le 06-07-2007 à 14:41:51

---------------
Be the one with the flames.
Reply

Marsh Posté le 06-07-2007 à 14:41:25   

Reply

Marsh Posté le 06-07-2007 à 15:29:43    

Voila le script qui fonctionne:
 
#!/bin/bash
 
#Sauvegarde Quotidienne Mambo Seul. Pas ancien site web isat :
 
cd /var/www/
 
tar -cvzf /var/save/backup_site_web/sauve_quotidienne_site_`date +%d-%m-%G`.tar.gz /var/www
 
 
#Sauvegarde Quotidienne des bases de donnees MySQL :
 
tar -cvzf /var/save/backup_bases_MySQL/sauve_quotidienne_bases_`date +%d-%m-%G`.tar.gz /var/lib/mysql/*
 
 
Il ne me reste plus qu'a faire marcher cron

Reply

Marsh Posté le 06-07-2007 à 15:34:07    

Cron ne veut pas marcher et je ne comprend pas pourquoi.
 
Pourtant en faisant crontab -l j'ai bien mon cron de programmer:
 

Code :
  1. www:/var/save# crontab -l
  2. # m h  dom mon dow   command
  3. 33 15 * * * /var/save/sauve_quotidienne.sh


 
Une idée ?


Message édité par raised le 06-07-2007 à 15:34:30
Reply

Marsh Posté le 06-07-2007 à 16:56:03    

Meme un cron tout bete ne marche pas:  
 
 

Code :
  1. www:/etc/cron.d# crontab -l
  2. # m h  dom mon dow   command
  3. 46 16 * * * echo "test cron"


 
Aucun message ....
 
Comprend pas

Message cité 1 fois
Message édité par raised le 06-07-2007 à 16:56:16
Reply

Marsh Posté le 07-07-2007 à 10:53:07    

raised a écrit :

Meme un cron tout bete ne marche pas:  
 
 

Code :
  1. www:/etc/cron.d# crontab -l
  2. # m h  dom mon dow   command
  3. 46 16 * * * echo "test cron"


 
Aucun message ....
 
Comprend pas


et bien peut etre qu'il ne va pas l'afficher dans le meme terminal que le tien. Renvoie le resultat de ton echo dans un fichier en spécifiant le chemin absolu.

Reply

Marsh Posté le 09-07-2007 à 15:23:43    

Citation :

Renvoie le resultat de ton echo dans un fichier en spécifiant le chemin absolu.


 
Comment faire ?


Message édité par raised le 09-07-2007 à 15:24:31
Reply

Marsh Posté le 09-07-2007 à 16:04:22    

Voila mes tests:  
 

Code :
  1. # m h  dom mon dow   command
  2. 05 16 * * * /var/save/sauve_quotidienne.sh
  3. 05 16 * * * echo "test cron"
  4. 05 16 * * * /var/save/test.sh (renvoie echo "test cron" )


 
sauve_quotidienne.sh et test.sh marchent tres bien en les lancant manuellement ./sauve_quotidienne ./test.sh
 
J'ai stopé le daemond et relancé:
 

Code :
  1. www:/var/spool/cron/crontabs# /etc/init.d/cron stop
  2. Stopping periodic command scheduler: crond.
  3. www:/var/spool/cron/crontabs# /etc/init.d/cron start
  4. Starting periodic command scheduler: crond.


 
Je suis logé en root sur le serveur, dans /var/spool/cron/crontabs/root se trouve bien les cron que j'ai rentré avec la commande crontab -e
 
Je comprend pas la :/


Message édité par raised le 09-07-2007 à 16:04:43
Reply

Marsh Posté le 09-07-2007 à 16:22:39    

Bon bah ca marche...
 
Enfin mon sauve_quotidienne.sh marche j'ai bien mes .tar.gz
 
C est juste que mes 2 autres test n'affichaient pas l'echo...
 

Reply

Marsh Posté le 09-07-2007 à 21:09:13    

Ton script n'est pas bon.
 
Sauvegarde /var/lib/mysql ça n'a pas de sens. Tu peux parfaitement copier un fichier lorsqu'une écriture est en cours et te retrouver avec quelque chose d'incohérent.
 
Comme indiqué plus haut, utilise mysqldump.

Reply

Marsh Posté le 11-07-2007 à 10:02:51    

M300A a écrit :

Ton script n'est pas bon.
 
Sauvegarde /var/lib/mysql ça n'a pas de sens. Tu peux parfaitement copier un fichier lorsqu'une écriture est en cours et te retrouver avec quelque chose d'incohérent.
 
Comme indiqué plus haut, utilise mysqldump.


+1


Message édité par chaica le 11-07-2007 à 10:03:25
Reply

Marsh Posté le 12-07-2007 à 23:44:34    

Salut, voici mon script de sauvegarde mysql que je met en crontab une fois par jour. Il est tout à fait fonctionnel.
C'est en crontab root avec un user configuré dans my.cnf pour qu'il se connecte sans mot de passe.
Il y a une sauvegarde sur un ftp sous utilisateur courant.
 

Code :
  1. #!/bin/bash
  2. # by sputnick
  3. DAT=$(date +%Y%m%d)
  4. /usr/bin/mysqldump -u $USER --all-databases --quote-names --opt > /tmp/dump.${DAT}.sql
  5. chown $USER: /tmp/dump.${DAT}.sql
  6. su - $USER -c 'DAT=$(date +%Y%m%d); lftp ftp://login:passwd@host -e "cd mysql ; put /tmp/dump.${DAT}.sql ; quit" && \
  7. echo "dump.${DAT}.sql ok" | mail -s "dump sql $HOSTNAME ok" user@mail-de-la-mort-qui-tu.org'
  8. rm -f /tmp/dump.*


Message édité par sputnick le 12-07-2007 à 23:47:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed