Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rsync et execution de commande distante

7 réponses
Avatar
Mag
Bonjour,

Savez vous si il y a un oyen de dire a Rsync d'executer une
commande distante via SSH qui il envoit un fichier ?

Je m'explique:

J'ai un cron qui synchronise deux repertoires
et dans 80% du temps, il n'envoi aucun fichier
normal vu que je ne le modifie pas toutes les heures.
J'aimerais que quand je modifie un fichier sur le serveur A
et que rsync envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.

Merci d'avance

7 réponses

Avatar
ygg
23.08.2006 07:48 - Mag /
Bonjour,

Savez vous si il y a un oyen de dire a Rsync d'executer une
commande distante via SSH qui il envoit un fichier ?

Je m'explique:

J'ai un cron qui synchronise deux repertoires
et dans 80% du temps, il n'envoi aucun fichier
normal vu que je ne le modifie pas toutes les heures.
J'aimerais que quand je modifie un fichier sur le serveur A
et que rsync envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.

Merci d'avance
Pourquoi ne pas utiliser la commande ssh en suivant?

rsync ... ; ssh commande

Avatar
Mag
23.08.2006 07:48 - Mag /
Bonjour,

Savez vous si il y a un oyen de dire a Rsync d'executer une
commande distante via SSH qui il envoit un fichier ?

Je m'explique:

J'ai un cron qui synchronise deux repertoires
et dans 80% du temps, il n'envoi aucun fichier
normal vu que je ne le modifie pas toutes les heures.
J'aimerais que quand je modifie un fichier sur le serveur A
et que rsync envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.

Merci d'avance
Pourquoi ne pas utiliser la commande ssh en suivant?

rsync ... ; ssh commande


J'y ai pense, le probleme est que si rsync n'envoi pas de fichier
parce qu'il n'y a pas eu de modification, il execute quand meme
la commande ...

cela revient a faire un simple cron avec dedans un reload toute
les 15mn ;=)


Avatar
zoot
Mag wrote:
Bonjour,

Savez vous si il y a un oyen de dire a Rsync d'executer une
commande distante via SSH qui il envoit un fichier ?

Je m'explique:

J'ai un cron qui synchronise deux repertoires
et dans 80% du temps, il n'envoi aucun fichier
normal vu que je ne le modifie pas toutes les heures.
J'aimerais que quand je modifie un fichier sur le serveur A
et que rsync envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.

Merci d'avance


J'utilise rdist qui permet une commande

HOSTS = ( dingo )

BBO_FILES = ( bb19/etc bb19/ext bb19/bin bb19/runbb.sh ctl/LASTSYNCH )
(${BBO_FILES}) -> (${HOSTS})
install -R ;
# notify ;
cmdspecial ${BBO_FILES} "bb19/runbb.sh restart";

les fichiers ne sont envoye que si ils sont plus recent sur le serveur
maitre, et la command n'est executee que si au moins un des fichier est
transmit.

Je ne connais pas rsynch ! :-/

Zoot

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:44ebec20$0$6555$,
*Mag* tapota sur f.c.o.l.configuration :

Bonjour,

J'aimerais que quand je modifie un fichier sur le serveur A et que rsync
envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.


L'option --stats de la commande rsync donne, à la fin de la synchronisation,
un récapitulatif dont le nombre de fichiers transférés. On peut alors
envisager un script qui « parserait » la sortie de rsync pour déterminer le
nombre de fichiers transférés et agir en conséquence.

Un exemple simpliste avec awk :

rsync [options] --stats /src /dst |
awk '/^Number of files transferred:/{ if ($5 > 0) system(commande) }'

--
Sébastien Monbrun aka TiChou

Avatar
Matthieu Moy
Sébastien Monbrun aka TiChou writes:

rsync [options] --stats /src /dst |
awk '/^Number of files transferred:/{ if ($5 > 0) system(commande) }'


Mais la commande sera executée localement, et le PO voulait une
execution sur le serveur.

C'est possible si "commande" est du type "rsh serveur blablabla",
sinon, on doit pouvoir jouer avec un wrapper de rsync côté serveur et
--rsync-path côté client.

--
Matthieu

Avatar
Mag
Dans le message <news:44ebec20$0$6555$,
*Mag* tapota sur f.c.o.l.configuration :

Bonjour,

J'aimerais que quand je modifie un fichier sur le serveur A et que
rsync envoi le fichier sur le Serveur B, il execute une
commande sur le serveur B juste apres avoir transmis les
fichiers modifies.


L'option --stats de la commande rsync donne, à la fin de la
synchronisation, un récapitulatif dont le nombre de fichiers transférés.
On peut alors envisager un script qui « parserait » la sortie de rsync
pour déterminer le nombre de fichiers transférés et agir en conséquence.

Un exemple simpliste avec awk :

rsync [options] --stats /src /dst |
awk '/^Number of files transferred:/{ if ($5 > 0) system(commande) }'



Merci beaucoup !!!!!!!!!!!!! c'est exactement ce que je recherchais !


Avatar
Mag
Sébastien Monbrun aka TiChou writes:

rsync [options] --stats /src /dst |
awk '/^Number of files transferred:/{ if ($5 > 0) system(commande) }'


Mais la commande sera executée localement, et le PO voulait une
execution sur le serveur.

C'est possible si "commande" est du type "rsh serveur blablabla",
sinon, on doit pouvoir jouer avec un wrapper de rsync côté serveur et
--rsync-path côté client.


C'est exactement ce que j'ai fais, j'ai fait un petit script qui execute
la commande via ssh sur le serveur distant ...

Merci pour votre aide.