supinfo
Ouverture de  SUPINFO USA à San Francisco en 2008. Des études en informatique en Californie à un tarif abordable ! Inscrivez-vous dès maintenant !
supinfo
Connexion :

Recherche

  
   Tout| Actus| Télécharger| Comparateur de prix| Dossiers| Forums| Jeux| Google

13 messages
ok

[scrip shell] script de backup qui mer....[RESOLU] - bad interpreter !!!

bonjour, je vooulais faire un script de backup mais j'ai des erreur et je ne voi pas pourquoi. voici mon script:
Code :
##########################################
#!/bin/bash
#DATEJOUR=`date +'%w'`
DATEJOUR=`date +'%d'-'%m'-'%y'_'%H'-'%M'`
DATE=`date`


MAIL="" #Mail de la personne qui recevra le rapport
CHEMIN="/root/backup/save" # Chemin de la sauvegarde (sans le '/' à la fin)

######logs######
echo "===== Rapport de sauvegarde =====" > /root/backup/result_backup.txt

if [ "$1" = "increment" ]
then
DATEOLD=`cat date.increment.dump`
tar -c -G -v -z -f $CHEMIN/backup_increment.tar.gz -b 126 -N "$DATEOLD" -V "Sauvegarde du $DATEOLD au $DATE" $2 $3 $4 $5 $6 $7 $8 $9 >> /root/backup/result_backup.txt
echo $DATE > date.increment.dump



mais qd je lance mon script: ./Backup.sh increment /root/Dossier/

il me dit:
cat: date.increment.dump: Aucun fichier ou répertoire de ce type
pourtant, mon fichier date.increment.dump est bien cree et rempli !!!!

si qq'un a une idée.. merci
 
 
et lorque je relance sans rien changer, il me met:

./Backup.sh increment /root/Dossier
tar: Substitution de 1970-01-01 00:59:59 pour un format inconnu de date `mer nov 16 12:11:00 CET 2005'
tar: Retrait de l'en-tête `/' des noms des membres


fo bien mettre date pour l'argument -N ????
 
 
Une remarque toute bête, peut être faut-il que tu t'assures que ton script ne se trompe pas de chemin d'accès à ton fichier "date.increment.dump".
Ajoute le chemin complet au fichier lors du cat.

Pour le tar, je ne sais pas...
 
 
Bon alors j'ai resolu UN problème mais maintenent, y'en a un autre, cela fonctionne tres bien sur une red hat 9 et des que je met mon script sur mon serveur de backup, paf, ca plante !!!

Code :

##########################################
#!/bin/bash
DATE=`date +'%Y-%m-%d %H:%M:%S'`
DATE_BAC=`date +'%Y-%m-%d_%Hh%Mm%Ss'`
MAIL="mehdi@up2news.com" #Mail
CHEMIN_SAUVEGARDE=$2 # Chemin de la sauvegarde (sans le '/' à la fin)
CHEMIN_DONNEES="/root/backup"
FICHIER="$CHEMIN_DONNEES/date.increment.dump"

if [ -f $FICHIER ] #si pas de date de dernier backup alors on fait un backup total a la place
then
MODE="$1"
else
MODE="TOT"
fi


##############log###############
echo "===== Rapport de sauvegarde =====" > $CHEMIN_DONNEES/result_backup.txt

######incrementielle############
if [ "$MODE" = "INC" ]
then
DATEOLD=`cat $CHEMIN_DONNEES/date.increment.dump`

tar -c -G -v -z -f $CHEMIN_SAUVEGARDE/backup_inc_$DATE_BAC.tar.gz -b 126 -N "$DATEOLD" -V "Sauvegarde du $DATEOLD au $DATE" $3 $4 $5 $6 $7 $8 $9 >> $CHEMIN_DONNEES/result_backup.txt

echo $DATE > $CHEMIN_DONNEES/date.increment.dump


#############totale##############
elif [ "$MODE" = "TOT" ]
then
tar -c -G -v -z -f $CHEMIN_SAUVEGARDE/backup_tot_$DATE_BAC.tar.gz -b 126 -V "Sauvegarde du $DATE" $3 $4 $5 $6 $7 $8 $9 >> $CHEMIN_DONNEES/result_backup.txt

echo $DATE > $CHEMIN_DONNEES/date.increment.dump
else

echo "Problème de paramètres--> syntaxe: ./Backup.sh mode dest src1 src2 src3 ...."
echo "-----------------------------------------"
echo "Backup Complet:"
echo "./backup.sh TOT média_ou_enregistrer dossier_a_sauver dossier2 dossier3  ... "
echo "Copie total du dossier mi en paramettre"
echo "-----------------------------------------"
echo "Backup incremental:"
echo "./backup.sh INC média_ou_enregister dossier_a_sauver dossier2 dossier3 ..."
echo "Seul les fichiers ajouté ou modifié depuis le dernier backup sera ajouté "
echo "-----------------------------------------"
echo "Exemple: ./Backup.sh INC /dev/st0 /mnt/NDdujour/"
echo "-----------------------------------------"
fi


###########fin du log envoie par mail#########

mail -s Backup_$3 $MAIL < "$CHEMIN_DONNEES/result_backup.txt"
rm $CHEMIN_DONNEES/result_backup.txt
################################################



Donc voila, sur un pc, ca marche nikel, sur l'autre pas !!! (j'ai evidement mi les bon rep !!) il me dit:

: command not found
./backup.sh: line 34: syntax error near unexpected token `elif'
'/backup.sh: line 34: `elif ["$MODE" = "TOT" ]


etrange non??
 
 
Euh... Question toute bête :
Dans ton code y a bien un espace en le "[" et ta variable "$MODE" ?
Sinon essaye d'enlever les guillemets pour exprimer tes variables dans les tests d'égalités.
 
 
alors la incroyable, j'ai mi tt mon code en commentaire et la, il me met:

: bad interpreter: No such file or directory

alors que j'ai pourtant mi:
Code :
#!/bin/bash
en debut de ligne !!!

j'ai essayé aussi
Code :
#!/bin/sh

mais ca donne la meme chose
si qq'un a une idée, merci

ps, je suis sur une distrib: sme serveur
 
 
pour lancer un script, il faut des librairie de base? parce que il me semble que le sme serveur est vraiment tres light et pour des raison de securité, y'a pas de couche de compil???? !!!
 
 
deja tu pourrais incrementer ton p*tin de code tu ferais moins d'erreur lol
 
 
deuxion la ligne #!/bin/bash doit etre la premier !!!!
pas la deuxieme pas la troisieme !!!! la premiere !
 
 
ps si tu t en sort pas en shell tu peut faire du php

en tapant #!/bin/php (si il est la)
 
 
et bien ma fois, c'est pareil, j'ai bien mi #!/bin/sh a la premiere ligne, premier caractère.

j'ai essayé aussi #!/bin/bash

j'ai toujours la meme erreur: : bad interpreter: No such file or directory

je comprend vraiment pas, je pense que ca viens de la distrib car j'ai testé ce meme code sur une red hat 9 et ca tourne nickel, donc ca viens de mon sme serveur, mais je sais pas pourquoi !!!
 
 
Bon et bien j'ai resolu l'affaire, ca devait etre le fichier qui etait conrompu ou les 2 version de linux imcompatible car j'ai cree un nouveau script a parti de sme cette fois et fait coppier coller du script et la ca marche !!!

donc maintenent, j'ai n autre souci, dans mon script, je met le chemin ou je veux suver l'archive en param. si je met un rep de mon sme, tt fonctionne bien, mais moi, je veux sauver sur bande. mais qd je met /dev/st0, il me met:

Code :
/dev/st0/backup_tot_2005-11-22_20h23m33s.tar.gz: Cannot open: N'est pas un répertoire
tar (child): Error is not recoverable: exiting now
./backup.sh: line 51: 10622 Relais brisé (pipe)     tar -c -G -v -z -f $CHEMIN_SAUVEGARDE/backup_tot_$DATE_BAC.tar.gz -b 126 -V "Sauvegarde du $DATE" $3 $4 $5 $6 $7 $8 $9 >>$CHEMIN_DONNEES/result_backup.txt


mais pourtant, le device st0 est monté !!!

si qq'un a ne idée
 
 
Le problème c'est que tar (TApe Recorder) est (historiquement) une appli pour écrire directement sur les bandes qui sont dépourvues de système de fichier mais par contre qui gère tout ce qui est incrémentation etc... Donc à mon avis t'as fait beaucoup de script pour rien et je t'invite à taper un man tar

mais en tout cas la syntaxe est à mon avis (si quelqu'un pouvait confirmer)
tar -f /dev/st0

et pas tar -f /dev/st0/fichier qui est absurde... st0 est une block device pas un répertoire.
 
 
 
13 messages
ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires:


 
Clubic.com
 
Achetez-facile.com
 
Jeuxvideo.fr
 
neteco.com
 
mobinaute.com