[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

problème d'exécution d'un script bash en cron ou via bacula



Bonjour à tous
j'ai un script bash qui fonctionne bien quand je le lance "à la main" : ./BeforeJobs.sh quand ce dernier est appelé par bacula j'ai l'erreur : ClientRunBeforeJob: /etc/scripts/bacula/BeforeJob.sh: 15: Syntax error: "(" unexpected Pour vérifier le problème j'ai mis mon script dans cron j'ai la même erreur : /etc/scripts/bacula/BeforeJob.sh: 15: Syntax error: "(" unexpected

à priori cela coinse au niveau de mon tableau j'ai essaye les ecritutres suivante trouvée sur le web : avec ou sans espace entre la parenthèse et le premier caractère à l'intérieur de cette dernière ( idem à la fin de la parenthèse ) => Tableau=([1]="postgres [2]="template1" [3]="mantis" [4]="dbnl51" [5]="ipplan")
=>   Tableau=(postgres template1 mantis dbnl51 ipplan)
=> declare -a Tableau=([1]="postgres [2]="template1" [3]="mantis" [4]="dbnl51" [5]="ipplan")
=>   declare -a Tableau=(postgres template1 mantis dbnl51 ipplan)

voici mon script

#
#
#

#!/bin/sh

# Constantes chemin des répertoires
DirTmp=/data/BckPostgres
DirFinal=/data/BckDbs
DirTime=/etc/scripts

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Constantes bases
# Mettre dans le tableau le nom de la base de donnée [son_numero]=nom_base
Tableau=( [1]=postgres [2]=template1 [3]=mantis [4]=dbnl51 [5]=ipplan )
NbElement=${#Tableau[@]}

#login
User=postgres

echo '################################################'
echo '#             Debut Pré-install                #'
echo '################################################'

echo "Mise à jour de l'heure"
$DirTime/time.sh

echo 'Supression de la dernière sauvegarde'
cd $DirFinal
rm *.gz
echo 'Suppression terminée'

if [ -d $DirTmp ] ; then
    echo -e "Le répertoire $DirTmp existe"
else
    echo -e "Le répertoire $DirTmp n'existe pas : création de ce dernier"
    mkdir -p $DirTmp
    chown -R postgres $DirTmp
fi

echo "Nombre de bases à sauvegarder : '$NbElement' ."

# Dump des databases chaud
echo "Sauvegarde intégrale des bases"
for i in ${!Tableau[*]}
do
    Base=${Tableau[$i]}
    su $User -c "pg_dump -E='UTF8' --create -o $Base --file=$DirTmp/$Base.`date +%d-%m-%y`.sql"
    taille=$(ls -alh $DirTmp/$Base.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
    if [ $taille = 0 ] ; then
        taille='ERREUR DE SAUVEGARDE'
    fi
    echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des datas uniquement"
for i in ${!Tableau[*]}
do
    Base=${Array[$i]}
    su $User -c "pg_dump -E='UTF8' -o --data-only $Base --file=$DirTmp/$Base-data.`date +%d-%m-%y`.sql"
    taille=$(ls -alh $DirTmp/$Base-data.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
    if [ $taille = 0 ] ; then
        taille='ERREUR DE SAUVEGARDE'
    fi
    echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des datas uniquement avec insert"
for i in ${!Tableau[*]}
do
    Base=${Array[$i]}
    su $User -c "pg_dump -E='UTF8' --data-only --inserts $Base --file=$DirTmp/$Base-data-inser.`date +%d-%m-%y`.sql"
    taille=$(ls -alh $DirTmp/$Base-data-inser.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
    if [ $taille = 0 ] ; then
        taille='ERREUR DE SAUVEGARDE'
    fi
    echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

echo "Sauvegarde des schémas uniquement"
for i in ${!Tableau[*]}
do
    Base=${Array[$i]}
    su $User -c "pg_dump -E='UTF8' -o --schema-only $Base --file=$DirTmp/$Base-schema.`date +%d-%m-%y`.sql"
    taille=$(ls -alh $DirTmp/$Base-schema.`date +%d-%m-%y`.sql |awk -F" " '{print $5}')
    if [ $taille = 0 ] ; then
        taille='ERREUR DE SAUVEGARDE'
    fi
    echo 'DUMP de la base '$Base' effectué taille : '$taille''
done

#optimisation
echo "Optimisation des dumps sql"
cd $DirFinal
tar -czf DBS_Dump-`date +%m-%d-%y`.tar.gz  $DirTmp/*
taille=$(du -sh $DirTmp | awk -F" " '{print $1}')
echo 'Taille des dumps des bases de données : '$taille''
taille=$(ls -alh $DirFinal/DBS_Dump-`date +%m-%d-%y`.tar.gz | awk -F" " '{print $5}')
echo 'Taille du fichier compressé : '$taille''

echo '################################################'
echo '#              Fin Pré-install                 #'
echo '################################################'

Merci de votre aide

philippe




Reply to: