Script de restauration

xavyeii -  
 xavyeii -
Bonjour,

Alors voilà, je suis débutant sous linux et je dois faire un script qui sauvegarde et archive des fichiers d'une machine dans une machine distante. Bon jusque là j'y arrive. Je dois aussi pouvoir restaurer ces archives. Il me semble que j'arrive à restaurer toutes les archives en même temps mais je voudrais faire l'action suivante:

- l'utilisateur entre le nom d'une archive .. Cette archive est ensuite lister et l'utilisateur entre le nom d'un ou plusieurs fichiers dans cette archive pour pouvoir le ou les restaurer;

Je vous met mon code ci-dessous:


******************************************************************************************


#!/et -x

#***********************************
# *
# PARAMETRES *
# *
#***********************************

#machine distante
MACH="toorist@10.220.168.138"

#liste des répertoires non archivés
LISTE=`ls -d /inst-*`

#liste des répertoires archivés
LISTE2=`ssh ${MACH} gzip -lr /tmp/svg`

#date du jour
JOUR=`date '+%Y%m%d'`

NOMINST= ${rep#/inst-}

#**********************************
# *
# MENU *
# *
#**********************************



echo -e "\n \n Sélectionner ce que vous désirez faire :"
echo "1: Lister les sauvegardes disponibles"
echo "2: Archiver et Sauvegarder"
echo "3: Effectuer une restauration"
echo -e "4: QUITTER \n"
echo -n "Saisissez 1, 2, 3 ou 4: "
read reponse
echo -e " \n "

#*********************************
# *
# CHOIX REPONSE *
# *
#*********************************


case $reponse in

1)
ls /inst-*/apache/
ls /inst-*/mysqld/ ;;

2)
for rep in $LISTE
do
echo "traitement de $rep"
if [ -d ${rep}/apache ]
then
tar cfz - ${rep}/apache | ssh ${MACH} "cat > /tmp/svg/apache/${rep}-apache-${JOUR}.tar.gz"
if [ $? -ne 0 ]
then
echo "**** Une erreur s'est produite lors de la sauvegarde d'apache ! ****"
fi
fi
if [ -d ${rep}/mysqld ]
then
tar cfz - ${rep}/mysqld | ssh ${MACH} "cat > /tmp/svg/mysqld/${rep}-mysqld-${JOUR}.tar.gz"
if [ $? -ne 0 ]
then
echo "**** Une erreur s'est produite lors de la sauvegarde de mysqld ! ****"
fi
fi
done ;;

3)

echo "${LISTE2}" |awk -F"-" '{print $2}' |sort -u
echo -e "\n1: Lister le contenu d'une archive pour n'en restaurer qu'un seul"
echo "2: Restaurer toutes les archives"
echo -ne "\nReponse : "
read reponse2

if [ $reponse2 -eq 1 ]
then
echo -n "Nom de l'archive : "
read choix
echo -e "\n"
for choix in $*
do
if -d $choix
then
tar -tvf ${MACH}:/tmp/svg/apache/inst-${choix}-apache-*.tar
tar -tvf ${MACH}:/tmp/svg/mysqld/inst-${choix}-mysqld-*.tar
else #non disponible
echo "$choix n'est pas disponible"
fi
done
elif [ $reponse2 -eq 2 ]
then
scp ${MACH}:/tmp/svg/apache${LISTE}-apache-*.tar.gz /tmp
tar -C / -xvzf /tmp${LISTE}-apache-*.tar.gz
scp ${MACH}:/tmp/svg/mysqld${LISTE}-mysqld-*.tar.gz /tmp
tar -C / -xvzf /tmp${LISTE}-mysqld-*.tar.gz
else
echo "**** Erreur ! ****"
fi ;;


******************************************************************************************




Merci de votre aide par avance ! =)

Xavier
A voir également:

4 réponses

linuxnico Messages postés 206 Statut Membre 10
 
euh je comprends ce qu'est ton probleme, soit plus explicite, STP
0
xavyeii
 
En gros lorsque l'utilisateur tape :
3 puis 1 et qu'il rentre le nom de l'archive (listé juste avant), je voudrais que le contenu des archives correspondantes soient listées

Dans mon cas cela donne un truc du style:

*******************************************************************************************

Sélectionner ce que vous désirez faire :
1: Lister les sauvegardes disponibles
2: Archiver et sauvegarder
3: Effectuer une restauration
4: Quitter

Saisissez 1, 2, 3 ou 4: 3


havane
havane2

1: Lister le contenu d'une archive pour n'en restaurer qu'un seul
2: Restaurer toutes les archives

Réponse : 1
Nom de l'archive : havane (ou) havane2


*******************************************************************************************

Et à ce moment là, il ne se passe rien alors qu'il devrait me lister le contenu de:

- ssh ${MACH}:/tmp/svg/apache/inst-havane (ou) havane2-apache-*.tar
- ssh ${MACH}:/tmp/svg/mysqld/inst-havane (ou) havane2-mysqld-*.tar

Et que par la suite l'utilisateur sélectionne 1 ou plusieurs fichiers de l'archive pour le/les restaurer..

(Une mauvaise manip' de TAR sûrement..)

Voilà j'espère que j'ai été un peu plus clair.. Désolé je débute ^^
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

C'est normal qu'il ne se passe rien, tu demandes un choix à faire "Nom de l'archive :" que tu récupères dans la variable "$choix", puis tu veux faire une boucle sur je ne sais quoi "$*" ? Des paramètres apparemment, mais quels paramètres ? et pourquoi une boucle ?
Une fois que le chois est fait, tu vérifies si c'est un répertoire (là encore je ne sais pas sur quoi tu te bases ???), et tu enchaînes les commandes avec "tar" ...

if [ $reponse2 -eq 1 ]
then
echo -n "Nom de l'archive : "
read choix
echo -e "\n"

if [ [ -d $choix ]]
then

tar -tvf ${MACH}:/tmp/svg/apache/inst-${choix}-apache-*.tar
tar -tvf ${MACH}:/tmp/svg/mysqld/inst-${choix}-mysqld-*.tar
else #non disponible
echo "$choix n'est pas disponible"
fi 
...

 
Non ?
0
xavyeii
 
Si je fais cela il me met un message d'erreur quand je tape 3 dans le menu principal.
Il me met l'erreur suivante:

./move.sh: line 93: syntax error near unexpected token 'else'
./move.sh: line 93: ' else'
0