Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/10/2013, à 16:52

Julo_du_59

Rsync : Synchroniser 2 répertoires distants

Bonjour,

J'aimerai savoir comment synchroniser les répertoires de 2 serveurs sur mon réseau local depuis mon poste.

Par exemple :

Sur ma machine A :
J'aimerai synchroniser 1 répertoire de la machine B sur la machine C.

Evidemment, j'ai cherché au préalable, et une commande resort souvent :
ssh user@xxx.xxx.xxx.xxx 'rsync source destination'

Ici, ça revient à exécuter le rsync sur la machine B pour envoyer vers C, ce que je ne veux pas.

Je veux que ma machine A joue le rôle de pilote de tout ceci.
Auriez-vous une idée ?

Merci d'avance

Hors ligne

#2 Le 31/10/2013, à 16:58

Brunod

Re : Rsync : Synchroniser 2 répertoires distants

Sur A : monter les répertoires de B et C;
depuis A, faire un rsync du répertoire montés de B vers C;
Démonter les répertoires.


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#3 Le 31/10/2013, à 17:17

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

En sachant que ma machine A est un boîtier raspberry sur lequel je ne peux rien stocker (à peine 4Go de mémoire).

Je suis quelque peu bloqué.

Hors ligne

#4 Le 01/11/2013, à 09:03

Brunod

Re : Rsync : Synchroniser 2 répertoires distants

Le montage sert à accéder aux disques, pas à les stocker sur A.

Dernière modification par Brunod (Le 01/11/2013, à 09:03)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 01/11/2013, à 09:37

Zakhar

Re : Rsync : Synchroniser 2 répertoires distants

Si les cibles de synchro ont le daemon rsync, il n'est même pas la peine de monter... il faut juste lire le man. tongue


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#6 Le 01/11/2013, à 11:18

zibletop

Re : Rsync : Synchroniser 2 répertoires distants

Salut,

Le duo gagnant pour synchroniser 2 machines, c'est rsync + ssh avec authentification par clés publique/privée.

http://doc.ubuntu-fr.org/rsync#utilisation
http://doc.ubuntu-fr.org/ssh#authentifi … iqueprivee

a+

Hors ligne

#7 Le 06/11/2013, à 08:54

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

Pour en revenir au sujet, j'en ai discuté avec quelqu'un d'autre et il m'a conseillé effectivement de faire un point de montage.

zibletop a écrit :

Salut,

Le duo gagnant pour synchroniser 2 machines, c'est rsync + ssh avec authentification par clés publique/privée.

http://doc.ubuntu-fr.org/rsync#utilisation
http://doc.ubuntu-fr.org/ssh#authentifi … iqueprivee

a+

Pour répondre à zibletop, le problème est que je ne souhaite pas me connecter sur une machine avant de synchroniser. Mais rester sur le même poste pour synchroniser différentes machines. Rsync ne gère pas la synchronisation de 2 postes distants.

Ma question est donc la suivante :

Est-ce rapide de monter un répertoire ? Volumineux ou pas, est-ce que le temps varie ?

Dernière modification par Julo_du_59 (Le 06/11/2013, à 09:18)

Hors ligne

#8 Le 06/11/2013, à 21:19

Zakhar

Re : Rsync : Synchroniser 2 répertoires distants

Si tu ne lis pas mon message, tu n'as pas la réponse !

A lancer sur A

rsync -a   user_on_B@IP_Machine_B::/Path/Src  user_on_C@IP_Machine_C::/Path/Dest

Nécessite le daemon rsync sur les machines B et C

Cependant, je ne vois pas pourquoi tu voudrais faire ça, c'est un non sens d'un point de vue réseau et performance... mais c'est toi qui vois ! wink


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 07/11/2013, à 08:54

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

Disons que ce n'est pas un choix personnel, le "poste" A est un périphérique sur le réseau, j'ai évidemment la consigne de l'utiliser, de façon à ce que le périphérique dans lequel le programme sera implanté soit trés mobile et puisse être déplacé rapidement sur les réseaux. J'espère que mes explications sont assez claires.

Hors ligne

#10 Le 07/11/2013, à 20:29

Zakhar

Re : Rsync : Synchroniser 2 répertoires distants

Et tu as essayé le rsync tel que je l'indique ?

En l'occurrence ça correspond à la "mobilité" du programme, vu que tu donnes les adresses absolues des 2 daemons, tu peux le faire tourner sur A, sur B, sur C, ou sur la lune si ça te chante ! tongue

Le plus "intelligent" est évidemment de le faire tourner sur B ou C, mais ailleurs fonctionne aussi.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#11 Le 14/11/2013, à 11:35

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

Voila, j'ai réussi un programme pas trop dégueu pour la sauvegarde locale de données.

J'utilise bien les différents conseils fournis sur ce forum :

Brunod a écrit :

Sur A : monter les répertoires de B et C;
depuis A, faire un rsync du répertoire montés de B vers C;
Démonter les répertoires.

Je viens bien monter le(s) répertoire(s) (via sshfs), et je synchronise avec rsync (authentification clés rsa).
Pour la mobilité j'ai des fichiers de propriétés qui contiennent les informations utilisés pour la synchronisation (repertoire source, ip destination, etc ...) qui sont lus par mon programme tout simplement, vu que la configuration ne risque pas de changer toutes les semaines.

Le mieux étant que j'ai trouvé ce que je cherchais à faire. Stopper rsync si le temps de sauvegarde est trop long (imaginons que je le lance la nuit, je veux que le lendemain matin quand j'arrive, s'il n'a pas fini, il s'arrête et reprenne, la nuit, à l'endroit où il s'était arrêté idéalement), et bien ce petit utilitaire génial le fait si bien !

rsync, lorsqu'on l'arrête, reprend là où il s'était arrêté, si c'est pas beau ça ! smile

Maintenant, reste plus qu'à voir comment faire de même, mais sur un réseau externe. Là je synchronisais des périphériques sur mon réseau local, à voir désormais si je peux envoyer toutes ces données sur un serveur situé sur internet.

Connaissez-vous des utilitaires du même style que rsync capables de réaliser de telles prestations ?

Dernière modification par Julo_du_59 (Le 14/11/2013, à 11:38)

Hors ligne

#12 Le 15/11/2013, à 06:47

Brunod

Re : Rsync : Synchroniser 2 répertoires distants

Oui, rsync wink


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#13 Le 20/11/2013, à 10:44

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

En effet, je viens de voir qu'on pouvait le faire.

Je monte mon répertoire distant (FTP) via "curlftps" et je vais le synchroniser avec rsync.

Mais avec samba, est-ce que la synchronisation reste possible selon vous ? D'aprés certaines personnes avec qui j'ai pu parler, samba semble trés particulier à manier.

Dernière modification par Julo_du_59 (Le 20/11/2013, à 10:44)

Hors ligne

#14 Le 28/11/2013, à 10:28

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

Ah, je rencontre un gros souci avec rsync.

J'ai donc deux points de montage en local, l'un SSH l'autre FTP.

J'aimerai pouvoir faire de la synchro du répertoire de montage SSH vers le répertoire de montage FTP.

Seulement, lorsque je lance ma commande :

sudo rsync -avz /repertoire/local/montage/SSH /repertoire/local/montage/FTP

Le problème est que rien ne se synchronise. Je vois la liste des fichiers défiler sous mon prompt, et le message suivant s'affiche :

rsync: chown "/repertoire/local/montage/SSH/." failed: Operation not permitted (1)
fichier_0.txt
fichier_1.txt
fichier_10.txt
fichier_11.txt

Et à la fin de la liste, j'obtiens le message suivant pour chaque fichier :

rsync: mkstemp "/repertoire/local/montage/FTP/.fichier_0.txt.5ROhaU" failed: Operation not supported (95)

Bon, j'ai cherché, et j'ai pensé à ajouter un répertoire temporaire avec l'option --temp-dir, les fichiers se copient sur le répertoire de montage FTP, mais le contenu ne suit pas du tout. Ils sont tous vides, voila le message que j'obtiens aprés la liste des fichiers qui s'affichent :

rsync: open "/repertoire/local/montage/FTP/fichier_9.txt": No such file or directory (2)
rsync: copy "/var/tmp/rsync/.fichier_9.txt.pxzv1o" -> "fichier_9.txt": No such file or directory (2)

Et enfin, oui j'utilise bien la commande sudo, sait-on jamais si la question se poserait.

Bref, auriez-vous une idée pour synchroniser ces deux répertoires montés ?

Hors ligne

#15 Le 28/11/2013, à 20:58

Zakhar

Re : Rsync : Synchroniser 2 répertoires distants

Comment tu as "monté" le FTP ?

curlftpfs ?

Il y a des limitations à ça dues au protocole FTP lui-même.
Le protocole FTP, en écriture, te permet 2 choses:

put
append

Le premier "verbe" (put) écrit un fichier en entier.
Le second "verbe" (append) écrit un bout de fichier à la fin d'un fichier existant.

C'est tout, il n'existe absolument rien d'autre pour FTP en mode "écriture".

Par conséquent, tu as juste un gros gros problème si tu veux écrire "au milieu" d'un fichier. Ce n'est juste pas possible avec FTP. Ou plutôt il te faudrait contourner la chose à réécrivant totalement le fichier avec le bloc du "milieu" substitué. Tu vois alors la performance m*rd*que que tu auras !..

Or il se trouve que rsync possède un algorithme très malin qui lui permet de procéder par "delta" sur les fichiers et de n'écrire que les bouts qui ont changé. Donc précisément, rsync va avoir besoin d'écrire "au milieu"... et BAM tu tombes dans ce qui n'est pas possible avec FTP.

SI tu cherches à faire une telle opération avec curlfpfs, tu auras des messages tels que ceux affichés.

Ce n'est pas une limitation de curlftpfs lui-même, mais bien une limitation inhérente à FTP.

Le "contournement" est alors de désactiver le comportement "malin" de rsync, et de lui dire de simplement réécrire en entier un fichier dès que celui-ci a changé.
Je ne connais pas coeur l'option, mais regarde la doc.

Ca devrait marcher de la sorte... mais avec toutefois une performance dégueulasse si ce que tu synchronise ce sont de gros fichiers. Pour des petits fichiers, ça ne devrait faire qu'une différence minime.

Aussi rsync écrit des fichiers temporaires. Ca permet que si un rsync de "plante" (ou est arrêté par l'utilisateur) qu'il y ait au moins soit le fichier initial, soit le fichier final de disponible. Je ne connais pas le protocole exact qu'il utilise pour faire cela, mais tu risques aussi de tomber dans des limitations de curlftpfs (si c'est bien ça que tu as utilisé).


Par contre si tu faisais ton rsync "à l'envers", c'est à dire FTP (source) SSH (destination), là tu aurais moins de problème avec FTP.

(et pour SSHfs, je ne connais pas les "limites" en écritures, mais regarde la doc, en général c'est mentionné).

Dernière modification par Zakhar (Le 28/11/2013, à 20:59)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#16 Le 29/11/2013, à 09:58

Julo_du_59

Re : Rsync : Synchroniser 2 répertoires distants

Oui, je confirme que j'ai bien monté mon répertoire avec curlftpfs, j'aurai dû le préciser.

Je confirme également que du FTP vers SSH je ne suis absolument pas embêté, j'y ai cru, mais finalement il n'y a pas de souci.

Comme tu le dis si bien, il utilise des fichiers temporaires, je crois bien que c'est aussi ça qui empêche rsync de se faire. Je lui ai tout de même précisé un répertoire temporaire à utiliser, mais le fait qu'il écrit en milieu de fichier est assez problématique vu que j'ai les fichiers sur le répertoire FTP monté, mais pas leur contenu ...

Bref, je cherche donc une alternative pour palier à ce problème. On m'a conseillé Git, qu'en pensez-vous ?

Dans le pire des cas, je ferai la synchronisation moi-même "à la main" dans mon programme, tant pis. Dommage qu'on soit limité dans l'usage de tels outils que sont rsync.

Edit : J'ai oublié de préciser que je n'arrive même pas à faire une copie d'un fichier vers mon répertoire FTP monté.

sudo cp /fichier/a/copier /point/montage/FTP

Il me retour un beau :

cp: cannot create regular file `/fichier/a/copier': No such file or directory

Dernière modification par Julo_du_59 (Le 29/11/2013, à 10:13)

Hors ligne

#17 Le 29/11/2013, à 20:17

Zakhar

Re : Rsync : Synchroniser 2 répertoires distants

Oui, mais là ce n'est pas une limitation de rsync, mais une limitation de FTP qui n'est pas fait à la base pour supporter un filesystem.

curlftpfs est sympa, et il fait ce qu'il peut, mais il ne peut pas faire plus que le protocole sous-jacent !

Si tu veux comprendre ce qui ne lui plaît pas, tu peux lancer curlftpfs avec les options debug... et là tu auras la console pourrie de messages... ça te donnera peut-être une piste, mais sans garantie que tu puisses "réparer" vu les limites de FTP.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne