Synchronisation de données

Bonsoir,
voici le topo rapidement :

  • j’ai un PC fixe qui tourne sous Fedora 16 sur lequel j’ai installé un serveur SFTP via openSSh et qui contient donc mes données
  • un portable sous Debian Sid qui contient un répertoire de travail que je voudrais garder identique à celui sur mon fixe et avec lequel jen’ai pas une connection internet permanente.
  • ce même répertoire sur clef USB que je modifie lorsque j’utilise ces fichiers sur un autres ordinateur

Je cherche une solution simple pour synchroniser tout ces répertoires dès que j’ai un accès internet via SSH ou dès que je connecte ma clef USB sur ma tour.

J’utilise rsync pour mes sauvegardes mais il ne fonctionne que de manière uni-directionnelle ce qui ne convient pas. Synkron est très bien pour la clef USB mais ne fonctionne pas via SSH.
Unison a l’air pas mal mais il n’est plus développé apparemment…

Quelles solutions proposez vous ?

Merci

J’utilise toujours unison, qui bénéficient de mises à jour régulières.
Cela fonctionne très bien, bien que la nouvelle interface ne soit pas très pratique pour éditer les fichiers de configurations ( trop de clics nécessaires à mon goût ).

Ce serait optimal si rsync avait une possibilité de synchro bi-directionnelle ( cela devient vraiment nécessaire avec tous les appareils présents dans le ménage actuellement ), mais n’ayant pas trouvé de meilleure solution, c’est unison qui tourne.

Il est possible avec “rsync” de ne mettre à jour que les fichiers les plus récents.

Donc tu fais une synchronisation dans un sens puis une autre synchronisation dans l’autre sens. Comme seuls les fichiers les plus récents sont mis à jour, tu es sûr de ne pas écraser une nouvelle version par une autre plus ancienne et tu te retrouveras avec la même chose des 2 côtés, avec les fichiers les plus à jours :slightly_smiling:

Voici ce que dit le manuel (toujours lire le manuel !!) :

[quote]-u, --update
Ceci force rsync à ignorer tous les fichiers pour lesquels le fichier de destination existe déjà et avec une date postérieure à celle du fichier de source. (Si un fichier destination existant a une date égale à celle du fichier source, il ne sera mis à jour que si les tailles diffèrent.)
Dans l’implémentation courante de --update, une différence de format du fichier entre le récepteur et l’émetteur est toujours considérée comme suffisamment importante pour le mettre à jour, quelque soient les dates des fichiers. Autrement dit, si la source est un répertoire ou un lien symbolique tandis que la destination possède un fichier, alors un transfert sera lancé, peu importe les dates. Ce comportement est susceptible d’être modifié dans le futur (si vous avez un point de vue, vous pouvez en faire part, en anglais, à la liste de diffusion). [/quote]

“rsync” est un outil très puissant et très complet, tellement qu’il n’est pas toujours aisé de s’y retrouver avec toutes les options. Mais je pense qu’on peut à peu près tout faire avec en ce qui concerne la copie/sauvegarde/archivage de fichiers. Plus qu’un simple outil de synchronisation, c’est une boîte à outils complète à laquelle rien ne m’a manqué jusqu’à présent.

Hum, c’est une bonne nouvelle, faudra que je teste. Je n’ai pas eu le courage de tout lire, je l’avoue.
N’empêche, ça fait quand même deux scans en tout.

Certes mais “rsync” est vraiment bien optimisé par rapport aux autres logiciels donc même comme ça je pense que tu seras gagnant.

Merci cluster pour cette information sur rsync dont je ne savais pas qu’il pouvait faire cela. Il est rabbaché partout qu’il ne fait que la sauvegarde unidirectionnelle mais je vais creuser les options qui sont effectivement bien fournies.

Salut,

[quote=“Cluxter”]Il est possible avec “rsync” de ne mettre à jour que les fichiers les plus récents.

Donc tu fais une synchronisation dans un sens puis une autre synchronisation dans l’autre sens. Comme seuls les fichiers les plus récents sont mis à jour, tu es sûr de ne pas écraser une nouvelle version par une autre plus ancienne et tu te retrouveras avec la même chose des 2 côtés, avec les fichiers les plus à jours :slightly_smiling:[/quote]

Yes Sir! :023

Que dire de plus … :017

À si …

Sauvegarder sa Debian en vue d’une Réinstallation ou Reconstruction - Racine et Home séparés

Restauration ou Reconstruction de sa Debian - Racine et Home séparés

Concernant les options, Rsync Man en Français

Que du bonheur … :wink:

J’ai regardé, effectivement l’option -u est fort intéressante. Il me reste un problème : celui des fichiers que j’ai effacés ou renommés et que je ne veux pas voir revenir sur le support le moins récent…
J’utilise l’option --delete normalement mais en l’utilisant que dans un seul sens, donc pas d’embrouille mais en faisant un rsync dans un sens puis dans l’autre à la suite comment contourner ce pb ?

Je me demande si cette solution est possible sans avoir une fichiers contenant une mémoire des fichiers présents à un instant “t” et peut ainsi déterminer si le fichier “x” est une création dans un répertoire ou une suppression dans l’autre…Je sais que synkron gère cela mais j’ai des doutes pour unison et rsync…

[quote]–existing
Ceci dit à rsync de ne créer aucun nouveau fichier – uniquement mettre à jour les fichiers qui existent déjà sur la destination.
–ignore-existing
Ceci dit à rsync de ne pas mettre à jour les fichiers déjà existants chez le destinataire. [/quote]

Encore une fois, toujours lire le manuel : delafond.org/traducmanfr/man … ync.1.html

Donc après c’est assez simple : tu te fais un petit script qui regarde lequel des 2 répertoires racines est le plus ancien (car si tu modifies un fichier les répertoires supérieurs mettent à jour leur horodatage à la date et heure de la dernière modification) et tu lui demandes dans faire une mise-à-jour ancien–>nouveau (option “–update”) sans créer de nouveaux fichiers (option “–existing”). Comme ça les fichiers que tu as dans “nouveau” sont mis à jour mais les anciens ne reviennent pas.

Et comme tu veux également mettre à jour “ancien” car tu as aussi modifié des fichiers dans “nouveau”, tu fais un synchronisation “nouveau–>ancien” en utilisant l’option “–update”, mais tu enlèves l’option “–existing” puisque si tu as créés des fichiers dans le plus récent des 2 répertoires, tu veux également les répliquer. Et comme tu veux également faire disparaître dans “ancien” les fichiers que tu as supprimés dans “nouveau”, tu rajoutes l’option “–delete”.

J’espère ne pas m’être embrouillé dans mon raisonnement :confused:

Lorsqu’on a plus de 2 sources à synchroniser, il est préférable d’en avoir une qui sert de référence, et faire des synchro par rapport A celle ci. Au final c’est le fichier le plus récent qui reste
Essayer de faire des synchros croisées est trop casse geule.

[quote=“piratebab”]Lorsqu’on a plus de 2 sources à synchroniser, il est préférable d’en avoir une qui sert de référence, et faire des synchro par rapport A celle ci. Au final c’est le fichier le plus récent qui reste
Essayer de faire des synchros croisées est trop casse geule.[/quote]
Si c’est bien pensé ça devrait aller.

Par contre là où on ne peut rien faire, c’est dans le cas où on modifierait un fichier sur la machine A, le même mais de façon différente sur le machine B et où on voudrait fusionner les 2 modifications. Là c’est carrément un logiciel d’édition prévu pour qu’il faut, ça ne relève plus de la synchronisation. Et si la synchronisation ne se fait pas systématiquement et obligatoirement avant d’autoriser l’utilisateur à éditer les fichiers, alors on se retrouvera fatalement un jour ou l’autre dans cette situation (loi de Murphy…).

En fouinant un peu, j’ai trouvé cette solution : DVCS-AUTOSYNC : http://mayrhofer.eu.org/dvcs-autosync qui mérite intérêt, un genre de dropbox mais avec ton PC fixe qui sert de stockage au lieu du cloud et une mise à jour bidirectionnelle dès qu’une connexion internet est présente…pas mal.
Reste à coupler le dossier de partage avec SFTP pour avoir un accès via un autre ordinateur qui n’a pas le daemon d’installé et ça m’a l’air de convenir.

Avez vous déjà testé cette solution assez récente semble t’il ?

pour ceux que ça intéresse, une page en français détaillant l’instal sous debian/ubuntu : http://hackriculture.fr/blog/2011/08/29/dropbox-auto-heberge-avec-dvcs-autosync/