# Lancer rsync sur un montage nfs

**URL:** <https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 11:01 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850 "2016-02-20T23:01:40Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:01 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/1 "2016-02-20T23:01:40Z")

</div>

Salut,  
J’aimerais votre avis sur mon script.  
A priori ça fonctionne, mais comme je suis une bulle en la matière (c’est mon premier)…

Le but : lancer une sauvegarde sur un montage nfs. Le client teste si le serveur nfs est en ligne avec un ping, si non, il stop. Si oui, il lance la commande de mount. Ensuite le script vérifie que le montage est opérationnel, si oui, il lance rsync. J’ai préféré faire un deuxième teste sur le montage, au cas ou la machine soit en ligne, mais nfs-kernel-server indisponible.

Comme je suis une bille, j’ai fait un script pour chaque jour de la semaine, il doit y avoir moyen de faire plus simple…

[code]#!/bin/bash

# sauvegarde du lundi

if [“$(ping -c 3 192.168.0.2 | grep ‘0 received’)”]  
then  
: ; exit 1  
else

```
    if df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
    then :
    else
            mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
    fi

```

fi

if [-f /mnt/sidlol/sos/.test]; then  
echo "Disque monté, lancement de rsync:"  
rsync -rltgoDv --ignore-errors --force --stats --progress /mnt/sos/ --exclude-from=/root/ExclusionRsync /mnt/sidlol/sos/lundi/  
read  
exit

else  
echo "Non monté, sortie!"  
fi  
[/code]

Merci d’avance.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/2 "2016-02-20T23:02:23Z")

</div>

[quote=“lol”]Salut,  
J’aimerais votre avis sur mon script.  
A priori ça fonctionne, mais comme je suis une bulle en la matière (c’est mon premier)…

Le but : lancer une sauvegarde sur un montage nfs. Le client teste si le serveur nfs est en ligne avec un ping, si non, il stop. Si oui, il lance la commande de mount. Ensuite le script vérifie que le montage est opérationnel, si oui, il lance rsync. J’ai préféré faire un deuxième teste sur le montage, au cas ou la machine soit en ligne, mais nfs-kernel-server indisponible.

Comme je suis une bille, j’ai fait un script pour chaque jour de la semaine, il doit y avoir moyen de faire plus simple…

[quote]#!/bin/bash

# sauvegarde du lundi

if [“$(ping -c 3 192.168.0.2 | grep ‘0 received’)”]  
then  
: ; exit 1  
else

```
    if df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
    then :
    [color=#FF0000]else[/color]
            mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
    fi

```

fi

if [-f /mnt/sidlol/sos/.test]; then  
echo "Disque monté, lancement de rsync:"  
rsync -rltgoDv --ignore-errors --force --stats --progress /mnt/sos/ --exclude-from=/root/ExclusionRsync /mnt/sidlol/sos/lundi/  
read  
exit

else  
echo "Non monté, sortie!"  
fi  
[/quote]

Merci d’avance.[/quote]  
Ce “else” n’est pas de trop ❓

EDIT :  
à moins que ton ‘then’ ait un rapport avec ‘:’, auquel je n’avais pas prêté attention ?  
Dans ce cas, je pense que tu veux dire réponse vide ?  
Je ne connais pas bash mais ça ne serait pas “” pour vide ?

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/3 "2016-02-20T23:02:44Z")

</div>

c’est peut-être tout bête… mais dans ton script, tu fais un mount avant ton rsync si le serveur visé répond, puis lance le rsync si le mount est correct (via ton test sur fichier)  
mais pas de umount en fin de traitement ?

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/4 "2016-02-20T23:02:52Z")

</div>

[quote=“ricardo”]…  
Ce “else” n’est pas de trop ❓

EDIT :  
à moins que ton ‘then’ ait un rapport avec ‘:’, auquel je n’avais pas prêté attention ?  
Dans ce cas, je pense que tu veux dire réponse vide ?  
Je ne connais pas bash mais ça ne serait pas “” pour vide ?[/quote]Effectivement le else est indispensable à la seconde condition, je viens de tester.  
Les deux-point c’est pour “rien à faire”… Si j’ai compris ?

[quote=“Mitsu”]c’est peut-être tout bête… mais dans ton script, tu fais un mount avant ton rsync si le serveur visé répond, puis lance le rsync si le mount est correct (via ton test sur fichier)  
mais pas de umount en fin de traitement ?[/quote]  
Oui, merci j’avais oublié le démontage, c’est plus propre…

Donc à priori, vous n’avez rien remarqué d’atroce… Tant mieux.  
Il faut maintenant que je trouve le moyen d’ajouter le jour de la semaine dans le chemin de la sauvegarde.  
Je suppose qu’il faut extraire la date (en anglais) traduire en français, et l’injecter dans le chemin de la sauvegarde…  
Je vais “googliser” la-dessus.

Merci à vous

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/5 "2016-02-20T23:02:53Z")

</div>

Bonjour,

Pour le jour de la semaine tu peux utiliser cette commande : `date +%A`

Utilise la négation pour eviter d’avoir des actions qui ne font rien.

Tu peux remplacer ceci `if df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
        then :
        else
                mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
        fi`

par

`if ! df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
        then
                mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
        fi`

Je ne vois pas l’interet de ceci `: ; exit 1`, tu peux faire directement un `exit 1`.

Quel est l’interet de ton read après la commande rsync ?

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/6 "2016-02-20T23:02:55Z")

</div>

Salut,  
Merci d’avoir pris le temps de regarder ma croute…

[quote=«&nbsp;micky979&nbsp;»]Bonjour,

Pour le jour de la semaine tu peux utiliser cette commande : `date +%A`[/quote]  
Je venais de le trouver sur le Web…  
Tu sais comment je peux l’intégrer dans le chemin de la sauvegarde ? ça m’éviterais de faire un script par jour de la semaine… ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

[quote=«&nbsp;micky979&nbsp;»]Utilise la négation pour eviter d’avoir des actions qui ne font rien.

Tu peux remplacer ceci `if df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
        then :
        else
                mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
        fi`

par

`if ! df | grep -q 'sidlol.isalo.org:/media/sdb5/soslol'
        then
                mount -t nfs sidlol.isalo.org:/media/sdb5/soslol /mnt/sidlol/sos
        fi`

Je ne vois pas l’interet de ceci `: ; exit 1`, tu peux faire directement un `exit 1`.

Quel est l’interet de ton read après la commande rsync ?[/quote]

Merci pour l’astuce, c’est bien plus propre 😃  
Le read ? Je viens d’essayer sans. Effectivement ça ne sert à rien… Je pensais que ça me laissait la main pour lire le résultat de la commande… De toute façon il faut plutôt que je prévoie l’envoie d’un mail avec la sortie de rsync…

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/7 "2016-02-20T23:02:56Z")

</div>

Bonjour,

Tu peux remplacer ta ligne rsync par ceci :

```auto

```

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/8 "2016-02-20T23:02:56Z")

</div>

[quote=“micky979”]Bonjour,

Tu peux remplacer ta ligne rsync par ceci :

```auto

```

Super, c’est exactement ce que je cherche à faire! 😃  
Merci beaucoup. En “prod” dés demain !

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/9 "2016-02-20T23:03:00Z")

</div>

[quote]Tu peux remplacer ceci  
Code:  
if df | grep -q '[sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol’  
then :  
else  
mount -t nfs [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol /mnt/sidlol/sos  
fi

par

Code:  
if ! df | grep -q '[sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol’  
then  
mount -t nfs [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol /mnt/sidlol/sos  
fi[/quote]

Ma première impression était donc bien la bonne.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/10 "2016-02-20T23:03:02Z")

</div>

[quote=«&nbsp;ricardo&nbsp;»][quote]Tu peux remplacer ceci  
Code:  
if df | grep -q ‹&nbsp;[sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol&nbsp;›  
then :  
else  
mount -t nfs [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol /mnt/sidlol/sos  
fi

par

Code:  
if ! df | grep -q ‹&nbsp;[sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol&nbsp;›  
then  
mount -t nfs [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol /mnt/sidlol/sos  
fi[/quote]

Ma première impression était donc bien la bonne.[/quote]  
Oui, et non… 😉  
Non parceque ce n’est pas la même condition. Oui car avec une condition négative else n’est plus nécessaire.  
 ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/11 "2016-02-20T23:03:17Z")

</div>

Bon,  
Y’a un os…

Quand je lance avec la ligne de commande (en tant que root) il sauvegarde bien dans "lundi"  
Quand je lance la tâche cron, il sauvegarde dans “Monday”… Le c… Et c’est bien en root aussi…

```auto

```

Une idée régler ça ?

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/12 "2016-02-20T23:03:17Z")

</div>

Bonjour,

Tente de rajouter ceci au debut de ton script : `. /etc/default/locale`

ou tu rajoute au debut de ton script `LANG=fr_FR.UTF-8`

Si tu n’est pas sur de la valeur tu peux controler via cette commande `echo $LANG`

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/13 "2016-02-20T23:03:17Z")

</div>

Re,  
Merci d’être encore là pour moi 😃

```auto

```

Ne donne rien… (il faut bien un point et un espace ? - enfin ça marche pas sans…)

Bizare, parceque sous root j’ai bien :

`lol:~# date +%A
lundi
`

Enervant ce truc.  
Il doit y avoir une solution, je ne vois pas laquelle (enfin je comprend que c’est un problème de locales)…  
Au pire je mettrais les jours en anglais. Je sais c’est pas très combatif… 😊

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/14 "2016-02-20T23:03:18Z")

</div>

[quote=“micky979”]Bonjour,

Tente de rajouter ceci au debut de ton script : `. /etc/default/locale`

ou tu rajoute au debut de ton script `LANG=fr_FR.UTF-8`

Si tu n’est pas sur de la valeur tu peux controler via cette commande `echo $LANG`[/quote]

Hum… Je n’avais vu que le début de ton message… Tu l’as édité ?

En tout cas le LANG=fr\_FR.UTF-8 est parfait ! Merci infiniment de ton aide.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/15 "2016-02-20T23:03:19Z")

</div>

Re,  
Parlé trop vite… ça m’apprendra. (j’ai lancé depuis la ligne de commande)  
Toujours le même problème avec cron…

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/16 "2016-02-20T23:03:19Z")

</div>

Re,  
J’ai pensé faire le malin avec ça en début de code…

`LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
`  
Pas mieux; avec ou sans guillemets, il persiste sur “Monday” le bougre !

---

<div class="post-metadata">

**Author:** ![micky979](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d9b06d/32.png) [@micky979](https://www.debian-fr.org/u/micky979)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/17 "2016-02-20T23:03:20Z")

</div>

Bonjour,

Il faut ensuite que tu fasse un export

`export LANG` juste après le LANG=…

Il est normal que la commande `. /etc/default/locale` ne t’affiche rien, il ne fait que charger une variables.

L’avantage de passer par le fichier /etc/default/locale, c’est que en cas de modification de tes locales, tu n’auras rien a modifier dans tes scripts car ils vont s’appuyer sur un fichier generique.

Si tu veux utiliser cette methode dans ton script tu ajoute ceci :

`. /etc/default/locale
export LANG`

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/18 "2016-02-20T23:03:28Z")

</div>

Salut,

[quote=«&nbsp;micky979&nbsp;»]…

`. /etc/default/locale
export LANG`[/quote]  
Cette fois-ci est la bonne.  
Merci de ta patience, je n’au aucune notion en script, et c’est pas évident (du basic il y a presque 30 ans… ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green") )  
Il faudrait que je me trouve un bouquin ou un site, je vais chercher.  
 ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 20, 2016, 11:03 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/19 "2016-02-20T23:03:35Z")

</div>

Re,  
Au cas ou ça serve à quelqu’un… voici le script :  
Sauvegarde quotidienne, une sauvegarde différentielle par jour de la semaine (Je pèche par excès de prudence, mais j’ai de la place, et j’ai bien galéré au dernier crash de disque…) - Au total 7 sauvegardes, ça laisse de la marge ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

[code]#!/bin/bash

### sauvegarde différentielle journalière

. /etc/default/locale  
export LANG  
rm rsync\_$(date +%A)-result.log  
LOGFILE=«&nbsp;/root/rsync\_$(date +%A)-result.log&nbsp;»

if [«&nbsp;$(ping -c 3 192.168.0.2 | grep ‹&nbsp;0 received&nbsp;›)&nbsp;»]  
then  
exit 1  
else

if ! df | grep -q ‹&nbsp;[sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol&nbsp;›  
then  
mount -t nfs [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol /mnt/sidlol/sos  
fi

fi

if [-f /mnt/sidlol/sos/.test]; then  
rsync -rltgoDvh --ignore-errors --force --stats --progress /mnt/sos/ --exclude-from=/root/ExclusionRsync /mnt/sidlol/sos/$(date +%A)/ 2\>&1 \>\> ${LOGFILE}  
mailx vmail \< $LOGFILE ;  
umount [sidlol.isalo.org](http://sidlol.isalo.org):/media/sdb5/soslol  
exit

else  
echo «&nbsp;No, not mounted!&nbsp;»  
fi  
[/code]

Il manque encore l’envoie d’un mail au cas ou la sauvegarde n’a pas eu lieu. Ce sera pour plus tard…

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:04 UTC](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850/20 "2016-02-20T23:04:27Z")

</div>

On a un sujet qui recences les scripts que d’autres utilisateurs ont fait dans Trucs & astuces je pense que ça pourrait être bien de l’envoyer le copier là bas, non ?

[Page suivante](https://www.debian-fr.org/t/lancer-rsync-sur-un-montage-nfs/27850.md?page=2)
