probleme avec script de backup

probleme avec script de backup - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-05-2007 à 11:29:40    

salut a tous
 
je viens de récuperer un script pour faire des backups par ftp mais voila il ne marche pas, voila le script:
 

Code :
  1. #!/bin/sh
  2. #---------------------------------------------------------------#
  3. # Script de backup des répertoires web de ***
  4. # Author:  Stéphane MUNOS
  5. # Date:  20 octobre 2004        
  6. #
  7. # N?cessite le client FTP NCFTP
  8. #  #apt-get install ncftp
  9. #
  10. # Crontab / tous les jours ? 00h05
  11. #  #crontab -e
  12. #
  13. # 00 05 * * * /home/blabla/backup.sh
  14. #---------------------------------------------------------------#
  15. #----- Paramétrage du script -----
  16. # Configuration du FTP distant
  17. loginftp=mon_login
  18. passftp=mon_pass
  19. hostftp=xxxxx.blogdns.com
  20. # Racine WWW
  21. www=/var/www
  22. # Date du jour
  23. date=`date '+%d-%m-%Y'`
  24. # Date d'il y a 7 jours
  25. date2=`date --date '7 days ago' "+%d-%m-%Y"`
  26. #---------- Lancement du script ----------
  27. clear
  28. echo `date`
  29. echo '### Backup des répertoires test ###'
  30. echo
  31. #---------- Création des archives tar.gz ----------
  32. # Boucle sur tous les comptes Web
  33. for rep in `ls $www`; do   
  34.     if [ -d $www/$rep ]; then
  35.         tar -czf /home/backup/backup/backup_$rep\_$date.tar.gz $www/$rep
  36.         echo Tar.gz de $rep terminé 
  37.     fi
  38. done
  39. echo
  40. echo '### Backup terminé ###'
  41. echo
  42. echo
  43. echo '### Transfert des backups par FTP ###'
  44. echo
  45. #---------- Transfert des archives ----------
  46. # Boucle sur tous les comptes Web
  47. for rep in `ls $www`; do   
  48. if [ -d $www/$rep ]; then
  49.  fileToTransfert=/home/backup/backup/backup_$rep\_$date.tar.gz
  50.  fileToDel=/home/backup/backup/backup_$rep\_$date2.tar.gz
  51.  # Transfert FTP
  52.  ncftpput -u $loginftp  -p $passftp $hostftp / $fileToTransfert
  53.  echo Transfert FTP de backup_$rep\_$date.tar.gz terminé
  54.  # Effacement du backup de la semaine dernière
  55.  if [ -f $fileToDel ]; then
  56.   rm $fileToDel
  57.   echo $fileToDel effacé
  58.  fi
  59. fi
  60. done
  61. echo
  62. echo '### Transferts terminés ###'
  63. echo


 
et voila l'erreur que j'ai:
 

Code :
  1. samedi 19 mai 2007, 11:25:36 (UTC+0200)
  2. ### Backup des répertoires test ###
  3. tar: Retrait de « / » de tête des noms des membres
  4. Tar.gz de test terminé
  5. ### Backup terminé ###
  6. ### Transfert des backups par FTP ###
  7. ncftpput /home/backup/backup/backup_test_19-05-2007.tar.gz: server said: Could not create file.
  8. Transfert FTP de backup_test_19-05-2007.tar.gz terminé
  9. ### Transferts terminés ###


 
et je ne comprend pas ou retirer "/" comme dit dans l'erreur, merci A++

Reply

Marsh Posté le 19-05-2007 à 11:29:40   

Reply

Marsh Posté le 19-05-2007 à 11:50:16    

Tu n'as pas à le retirer, c'est juste un avertissement.
 
Il vire le premier / (la racine) afin d'eviter que si tu dé-tar dans un autre répertoire, il ne te recrée tout à partir de la racine ;)
 
Exple :
Tu sauvegardes /etc/fstab dans ton tar.gz, tu veux le restaurer dans un sous-repertoire : /tmp
cd /tmp
tar xfz ton_archive.tgz
=> /tmp/etc/fstab
 
Si il virait pas le premier / => /etc/fstab, ce qui peut ne pas être souhaitable.
 
Par contre ce qui ne marche pas dans ton script, c'est le dépot sur le FTP.
Soit un problème de droit, soit le repertoire de destination n'existe pas, soit un probleme d'espace disponible.


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 12:59:42    

ah ok, car oui le fichier n'arrive pas sur le serveur ftp, mais pour temps avec FileZilla j'arrive a posser des fichiers a la racine du serveur ftp, il faut pas que je creer ces repértoires: /home/backup/backup/ ? merci de votre aide A++

Reply

Marsh Posté le 19-05-2007 à 13:05:19    

Oui, crée le repertoire, à mon avis c'est la ton problème.


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 13:07:40    

pas de changement.

Reply

Marsh Posté le 19-05-2007 à 13:11:27    

Ah ouais, en fait j'avais pas lu le script, il semble le coller à la racine.
 
T'as pas des logs sur ton serveur FTP ?


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 13:20:34    

j'ai pas grand choses dans les logs:
 

Code :
  1. Sat May 19 13:19:06 2007 [pid 16999] CONNECT: Client "mon_ip"
  2. Sat May 19 13:19:06 2007 [pid 16998] [login] OK LOGIN: Client "mon_ip"
  3. Sat May 19 13:19:08 2007 [pid 17004] [login] FAIL UPLOAD: Client "mon_ip", "/backup_test_19-05-2007.tar.gz", 0.00Kbyte/sec


Reply

Marsh Posté le 19-05-2007 à 13:37:39    

T'as le droit d'ecrire à la racine avec ton user :??:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 13:46:35    

normalement oui car avec FileZilla j'arrive a déposser des fichiers a la racine

Reply

Marsh Posté le 19-05-2007 à 14:09:59    

T'es sur que c'est à la racine avec FileZilla ? et non pas dans le home de ton user ?


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 14:09:59   

Reply

Marsh Posté le 19-05-2007 à 14:19:12    

c'est meme pas dans home mais dans un autre répertoire qui est patagé par un serveur samba
c'est pas un probléme avec ncftp?


Message édité par hppp le 19-05-2007 à 14:20:50
Reply

Marsh Posté le 19-05-2007 à 14:30:56    

ah oui c'est bon j'ai trouvé le probléme, j'avais pas enfermé les utilisateurs dans leur répértoire alors pour lui la racine été la racine du disque, merci de votre aide

Reply

Marsh Posté le 19-05-2007 à 15:18:42    

j'ai encore 2 petites questions:
1- Pour executer le backup tous les jours a Minuits sur un serveur et tous les vendredi a 1h du matin sur l'autre serveur il faut que je metre quoi dans crontab?
2- et comment modifier le script pour garder à chaque fois un historique de 2 backups, comme par exemple celui du lundi et celui du mardi reste mais aprés le backup du mardi soire le backup du dimanche soit suprimé? merci

Message cité 1 fois
Message édité par hppp le 19-05-2007 à 15:19:24
Reply

Marsh Posté le 19-05-2007 à 15:29:43    

hppp a écrit :

j'ai encore 2 petites questions:
1- Pour executer le backup tous les jours a Minuits sur un serveur et tous les vendredi a 1h du matin sur l'autre serveur il faut que je metre quoi dans crontab?
2- et comment modifier le script pour garder à chaque fois un historique de 2 backups, comme par exemple celui du lundi et celui du mardi reste mais aprés le backup du mardi soire le backup du dimanche soit suprimé? merci


1) Tous les jours :

0 0 * * * /usr/local/bin/ton_script.sh


Ou :

@daily /usr/local/bin/ton_script.sh


 
Le Vendredi à 1h :

0 1 * * 5 /usr/local/bin/ton_script.sh


 
2) base toi sur la date du jour, les jours pairs archive_2.tgz, les jours impairs archive_1.tgz
Ca doit pas être bien compliqué :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 19-05-2007 à 17:07:07    

ok merci

Reply

Marsh Posté le 19-05-2007 à 20:35:54    

et une dernier question: si je veux l'executer uniquement le mardi, mecredi, jeudi et vendredi a 2 il faudrai mêtre quoi? merci
 
EDIT:  
 
c'est bon j'ai trouvé, ça doit donner ça non?
 

Code :
  1. 0 1 * * 1-5 /usr/local/bin/ton_script.sh


Message édité par hppp le 19-05-2007 à 20:54:04
Reply

Marsh Posté le 20-05-2007 à 10:47:36    

Code :
  1. 0 2 * * 2-5 /usr/local/bin/ton_script.sh


plutot :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 20-05-2007 à 11:04:50    

ah oui car la c'est 1h du matin
je viens de trouver un morceau de script pour aussi faire un backup de mes basses de donné mysql mais je ne sais pas trops quoi metre dans la variable fileDumpSql=, merci de ton aide :)  

Code :
  1. # dump sql du compte
  2. fileDumpSql=$www/$rep/dumpsql_$rep\_$date.sql
  3. /usr/bin/mysqldump $rep --user=root --password=passrootmysql -r "$fileDumpSql"
  4. tar -czf /home/administrateur ...

Reply

Marsh Posté le 20-05-2007 à 11:13:05    

Ben c'est le fichier dans lequel la base sera dumpée :??:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 20-05-2007 à 11:22:21    

ah ou elle sera sauvegardé et comprésé. ok merci

Reply

Marsh Posté le 20-05-2007 à 11:46:24    

et a se que j'ai compri il sauvegarde la basse de donnée qui a le méme nom que le répertoire du site web avec la variable $rep donné plus haut c'est pour ça que ça ne marche pas car mes basses de donné n'on pas les même nom, alors comment faire pour sauvegarder toutes mes basses de donné en même temps? merci

Reply

Marsh Posté le 20-05-2007 à 11:57:15    

Bah un truc dans le genre :

Code :
  1. for i in base1 base2 base3 base4... basen; do
  2. mysqldump $i --user=root --password=passrootmysql -r $i.sql
  3. ...
  4. done


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 20-05-2007 à 12:00:15    

il faut indiquer le nom de toutes les basses de données? il peut pas les lister tous seul? merci

Reply

Marsh Posté le 21-05-2007 à 07:54:01    

for i in `ls /var/lib/mysql/` .........

Reply

Marsh Posté le 21-05-2007 à 12:45:56    

hppp a écrit :

il faut indiquer le nom de toutes les basses de données? il peut pas les lister tous seul? merci


 
mysqldump -A ?

Reply

Marsh Posté le 21-05-2007 à 13:03:30    

Au passage, 7-Zip fait des miracles en compression sur du SQL. Je te le recommande fortement si t'as l'intention de transferer les dumps :)

Reply

Marsh Posté le 21-05-2007 à 17:19:51    

splurf a écrit :

for i in `ls /var/lib/mysql/` .........


for i in /var/lib/mysql/* .........

Reply

Marsh Posté le 21-05-2007 à 17:26:55    

splurf a écrit :

for i in `ls /var/lib/mysql/` .........


matafan a écrit :

for i in /var/lib/mysql/* .........



Des fois y a autres choses que les repertoires des bases, la-dedans, donc ce n'est pas une très bonne idée :D
 

Gf4x3443 a écrit :

mysqldump -A ?


 :jap:  
Pourquoi faire compliqué... [:twixy]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-05-2007 à 17:46:41    

MYSQLDUMP!
 
Arrêtez un peu vos bétise, on peut pas dumper autrement qu'avec mysqldump.

Reply

Marsh Posté le 21-05-2007 à 17:54:52    

M300A a écrit :

MYSQLDUMP!
 
Arrêtez un peu vos bétise, on peut pas dumper autrement qu'avec mysqldump.


Qui a dit le contraire :??:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-05-2007 à 18:25:56    

e_esprit a écrit :

Qui a dit le contraire :??:


 
Faut dire qu'il a pas creusé bien loin en posant sa question, c'est la première option expliquée dans les pages man, faut le faire [:dawa]

Reply

Marsh Posté le 26-05-2007 à 08:05:40    

alors il faut mieux faire quoi a la fin? merci

Reply

Marsh Posté le 27-05-2007 à 18:12:55    

ci dessous mon script qui fonctionne tres bien

Code :
  1. DUMPDATE=`date +%F`
  2. DUMPKEEP=15
  3. DUMPDIR=$HOME/db/mysql/$DUMPDATE
  4. mkdir -p $DUMPDIR
  5. mysqldump --all-databases -u$USER -p$PASS | bzip2 > $DUMPDIR/db_backups.sql.bz2
  6. # cat $DUMPDIR/db_backups.sql| grep "CREATE DATABASE" | grep "IF NOT EXISTS" | cut -f7 -d' ' | tr -d ';' | while read dbname
  7. for i in /var/lib/mysql/*/
  8. do
  9.     dbname=`basename $i`
  10.     mysqldump $dbname -u$USER -p$PASS | bzip2 > $DUMPDIR/$dbname.sql.bz2
  11. done
  12. find $HOME/db/mysql -type d -maxdepth 1 -name "????-??-??" -ctime +$DUMPKEEP -exec rm -rf {} \;

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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