Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
script backup rsync
Envoyé par: jimbo

Salut

j'aimerais améliorer mon script de backup qui est tres simple pour le moment puisque il se contente de transférer via la crontab mes fichiers :

rsync -vrup --bwlimit=15 -e ssh /home/jim/test jim@bm2i.homelinux.com:/home/jim/testb


mais j'aimerais tester ma connexion avant de transférer :


or (( ; ; )); do
  ping -q -c 1 bm2i.homelinux.org >/dev/null 2>&1
  if [ $? -eq 0 ]; then
echo "Bm2i répond"
   rsync -vrup --bwlimit=15 -e ssh /home/jim/test jim@bm2i.homelinux.com:/home/jim/testb
  break
  fi
done


mais en gros ce serait :


var=0
TANT_QUE (var <> 1)
    {
    ping bm2i.homelinux.com
    SI (réponse_au_ping == 1)
        var=1
    SINON
       attente_30_seconde
    fin_de_SI
    }
TANT_QUE (rsync.error==1)
    {
    rsync.error=0
    lancement de rsync
    SI (rsync retourne une erreur)
       rsync.error=1
    fin_de_SI
    }
mail à toto@domaine.com le fichier rsync.log

Le premier probleme est lancer 1 seule ping dans la commande de ping
(pas d'attente a pinger sans arret)
Le deuxième problème est d'identifier une erreur de rsync.


si vous pouvez m'aider se serait cool merci !!!





Uptime serveur Samba :

Poste le Tuesday 1 May 2007 22:44:54
Répondre     Citer    
Re: script backup rsync
Envoyé par: Fanch

salut,

alors : ping -c 1 bm2i.homelinux.com

ensuite : $? te donne le code de retour de la dernière commande exécutée


------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Wednesday 2 May 2007 08:35:34
Répondre     Citer    
Re: script backup rsync
Envoyé par: jimbo

Ok mais je peux lui dire d'attendre 15 minutes si le ping est négatif et de recommencer un test de ping puis si le test de ping est ok je fais rsync etc.... ?

je pense que c'est possible mais comment ?

Uptime serveur Samba :

Poste le Wednesday 2 May 2007 17:29:17
Répondre     Citer    
Re: script backup rsync
Envoyé par: Fanch

pour sûr !

essaye un truc du genre :
cptSecure=0
pingErr=1

while [[ pingErr != 0 && cptSecure <= 10 ]]
do
    ping -c bm2i.homelinux.com
    pingErr=$?
    [[ pingErr != 0 ]] && sleep 15m
    (( cptSecure = ${cptSecure} + 1 ))
done

if [[ pingErr != 0 ]]
then
    rsync ...
fi

je tape ça à la volée, donc attention ... mais bon, le principe est là.

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Thursday 3 May 2007 08:22:02
Répondre     Citer    
Re: script backup rsync
Envoyé par: jimbo

/backupv1.sh
./backupv1.sh: line 5: syntax error in conditional expression
./backupv1.sh: line 5: syntax error near `10'
./backupv1.sh: line 5: `while [[ pingErr != 0 && cptSecure <= 10 ]]'



ou j'ai remplacé par

#!/bin/sh
cptSecure=0
pingErr=1

while [[ pingErr -ne 0 && cptSecure -le 10 ]]
do
    ping -c bm2i.homelinux.com
    pingErr=$?
    [[ pingErr -ne 0 ]] && sleep 10m
    (( cptSecure -eq ${cptSecure} + 1 ))
done

if [[ pingErr -ne 0 ]]
then
    rsync -vrup --bwlimit=15 -e ssh /home/jim/test jim@bm2i.homelinux.com:/home/jim/testb
fi


mais


/backupv2.sh
ping: bad number of packets to transmit.

Uptime serveur Samba :

Poste le Thursday 3 May 2007 18:44:11
Répondre     Citer    
Re: script backup rsync
Envoyé par: jimbo

Merci de m'avoir aidé j'ai pu faire ca qui fonctionne, le script attend si bm2i-linux.com ne répond pas et il reprend apres coupure si ca coupe pendant le transfert.



#!/bin/sh
pingErr=1
rsyncErr=1

while [[ $pingErr != 0 ]]
do
    ping -c 1 bm2i.homelinux.com
    pingErr=$?
    if [[ $pingErr != 0 ]] 
then
echo "$?"
echo $pingErr
echo "Bm2i is down, waiting !!!!"
    sleep 1m
fi
done


while [[ $rsyncErr != 0 ]]
do

echo "Start rsync" 
rsync -vrup --timeout=10 --bwlimit=35 -e ssh /home/jim/siteweb jim@bm2i.homelinux.com:/home/jim/backup
	rsyncErr=$?
if [[ $rsyncErr != 0 ]] 
then
echo "interuption, waiting for Bm2i.homelinux.com......"
    sleep 1m
echo "wait 1 min."
fi
done
echo "Transfer complet"


pour améliorer il me reste encore a mettre en place un système de log qui reprend la date, taille transférée, etc.... si vous avez également des idées se serait cool !!!


c'est également possible de mettre dans le log la taille restante dans chaque dossier de backup sachant qu'un dossier de backup correspond à une partition ?

Uptime serveur Samba :

Poste le Thursday 3 May 2007 21:23:27
Répondre     Citer    
Re: script backup rsync
Envoyé par: oudoubah

Voici un petit script fait à la volée. Pour le log, il devrait afficher la date suivie du résultat de la commande rsync.

#!/bin/sh

LOG=/var/log/backup.log

# Decommenter les 2 lignes ci-dessous pour que le log se fasse dans le fichier de log
#exec 2>&1
#exec 1>$LOG

errcode=1

while [ $errcode -ne 0 ] ; do
   echo "$date - Debut de sauvegarde"
   RESULTAT="$(ping -c 1 bm2i.homelinux.com 2> /dev/null && rsync -vrup --timeout=10 --bwlimit=35 -e ssh /home/jim/siteweb jim@bm2i.homelinux.com:/home/jim/backup | grep sent)"
   errcode=$?
   if [ $errcode -ne 0 ] ; then
      [ "$RESULTAT" != "" ] && echo -e "$(date) : transfert interrompu sur code $errorcode\n$RESULTAT"
      sleep 1m         
   fi
done

echo "$(date) : $RESULTAT"
echo "$(date) : transfert complété"


Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 3 May 2007 22:12:47
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
script backup rsync
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons