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 20/04/2011, à 19:28

Zakhar

[Recherche] Logiciel de synchronisation "offline"

Alors voici mon "use case"(*) comme on dit dans les bon livres de modélisation UML. [(*) "Cas d'utilisation" en français]

Afin de protéger mes données précieuses au mieux :
- j'ai acheté un deuxième disque dur
- j'ai fait une sauvegarde des données précieuses
- j'ai mis ce deuxième disque dans un endroit très éloigné (à l'autre bout de la France) de ma résidence principale.

Dans le monde professionnel cela on appèle ça -entre autres dénominations- un "backup feu".
Pourquoi donc, eh bien si vous faites une sauvegarde, un Raid 1 ou 5, ou tout équivalent, cela ne vous protège pas d'un incendie, inondation, vol, etc... bref tout ce qui est susceptible de détruire ou faire disparaitre vos données à l'endroit où vous les utilisez.

La fameuse "sauvegarde régulière" (que certains oublient même) ne vous protège en réalité que des défaillances de vos supports de stockage principaux.

Pour ce protéger contre un aléa tels que ceux cités plus haut, il faut une deuxième réplique à un endroit suffisamment éloigné géographiquement.


Jusque là, pas de problème, j'ai réalisé la sauvegarde initiale, et j'ai porté (physiquement... c'est à dire dans le TGV tongue ), le disque de sauvegarde dans le site éloigné, mon lieu de vacances en fait, où je me rends souvent.


Maintenant la problématique est de mettre à jour cette sauvegarde éloignée, et si possible pas en mode "un seul sens" comme sait faire rsync, mais en mode "synchronisation", car lorsque je suis en vacances il m'arrive aussi de modifier des données sauvegardées (par ex. : prendre de nouvelles photos, mon tableau de pointage de mes comptes en banque, etc...)

Bien sûr, je pourrais utiliser Unison via le réseau (j'ai de l'Ubuntu de chaque côté avec VPN et tout ce qu'il faut), mais en attendant des lignes au débit montant suffisant, cette option est impraticable.

J'ai fait le test, mettre à jour 1Go de données prend entre 2h30 et 3h00, et monopolise pendant cette même durée toute la bande passante montante. Or on a désormais facilement des fichiers de cette taille là.


L'idée est alors de faire une "Synchronisation offline".

Je m'explique.

Je suis dans ma résidence principale.
Je dispose de l'empreinte des fichiers sauvegardés à distance (c'est à dire : liste des fichiers + tailles + dates + md5 par exemple).
Je dispose de la même empreinte locale.

Avec un logiciel un peu à la mode de Unison, je fais passer ça localement sur mes disques dans ma résidence principale et ça me produit une liste de fichiers de différences + éventuellement une liste des suppressions à faire à distance.

Je met tout ça sur un disque de transport avant de partir sur mon lieu de vacances.
Arrivé sur place, j'applique le différentiel, et la sauvegarde est alors "alignée" avec la résidence principale.

Avant de partir de mon lieu de vacances je fais la même opération pour récupérer les modifications effectuées sur place et les appliquer à mes données de référence.


Donc quelque part, c'est : le même travail que Unison, mais avec un intermédiaire de transport (le disque dur physique) qui me permet de mettre à jour des volumes aussi considérables que 500Go au besoin -ce qui prendrait 52 jours continus aux vitesses ADSL actuelles-.



La question est donc :

Connaissez-vous un logiciel qui fasse ce genre de chose.
En l'occurrence la synchronisation est simplifié par le postulat que je n'ai pas le don d'ubiquité. Je ne suis donc qu'à un endroit à la fois, et il ne doit pas y avoir de cas où, par rapport à l'empreinte, un fichier a été modifié des deux côtés. Situation qui s'appelle "conflit" dans tous les logiciels de synchro, et nécessite alors une décision manuelle pour savoir quelle version conserver.


P.S.: j'ai commencé à faire un truc... mais s'il existe un soft qui réalise déjà la fonction, je suis preneur !

P.S.2: il existe bien sûr un moyen "hardware" de faire la chose : acheter un 3ème disque de taille identique (celui "de transport" étant plus petit). Ainsi, si :
DISQUE A = Disque lieu A
DISQUE B = Disque lieu B
DISQUE C = Transport

Avant de partir du lieu A, et après les dernières modifications sur les données de référence en A, on fait
rsync A => C

Arrivé au lieu B, et avant de toucher aux données de B, on fait
rsync C => B

Et on fait l'opération symétrique avant de partir de B :
rsync B => C
puis
rsync C => A

... et donc, si je vois que c'est trop long de faire un truc fiable et qu'il n'y a pas d'existant... je prendrai peut-être cette solution vu le faible prix des disque durs de sauvegarde ! big_smile

Dernière modification par Zakhar (Le 20/04/2011, à 19:37)


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

Hors ligne

#2 Le 20/04/2011, à 19:41

Tomzz

Re : [Recherche] Logiciel de synchronisation "offline"

Bonjour,
J'ai fais un truc de ce genre pour le projet de disques de dépôts de ma signature.
Ça fonctionne comme ça:

1 - Je Fais un "fichier image" de quelsques ko, mo au pire du disque source avec la commande tree (en fait un bête fichier texte qui contient le liste des fichiers et répertoires, leur taille et leur date de création).

2 - Je fais un fichier image du disque cible de la même façon.

3 - Je compare les deux fichiers images et je crée un script à partir des différences => un coup de rm sur les fichiers suppimés ou mis à jour, puis un coup de cp sur les nouveaux fichiers.

4 - Je lance le script de cp sur le disque cible vers un disque de "transport" des données.

5 - Je lance le script de rm sur le disque cible, puis le script de cp, depuis le disque de transport vers le disque cible.

Ça marche pas trop mal, et on peut indifféremment inverser disque source et cible.
ça ne fonctionne pas, en revanche, si on fait des modifs sur les deux disques en même temps entre deux synchro (les modifs du disque cible seront perdues)

Hors ligne

#3 Le 20/04/2011, à 20:51

Zakhar

Re : [Recherche] Logiciel de synchronisation "offline"

Merci Tomzz.

Ce que j'ai commencé à faire est un peu sur le même principe.
Au lieu d'utiliser tree (qui n'est pas installé par défaut) j'utilise find avec un print/stat et echo pour générer une structure XML
Je rajoute un coup de MD5 pour être bien sûr.

Ainsi j'ai deux belles "empreintes" (ou listes "améliorées") et le XML me permet d'utiliser la toute puissance du XSLT pour explorer les différences et générer directement les scripts avec les "bons" mv ou cp.

... enfin c'est l'idée pour quand tout ça sera fini !.. big_smile

En réalité je pensais plutôt un truc "tout fait"... ou une option d'Unison qui m'aurait échappée.

N.B. : pour les "conflits", comme expliqué, il n'est pas sensé y en avoir car il n'y a que moi qui utilise ces données et je ne suis pas à deux endroits à la fois !.. C'est vrai que c'est la théorie... mais le seul cas où il peut y avoir "conflits", c'est si je commence à modifier des données à un endroit avant d'avoir fait la synchro !


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

Hors ligne

#4 Le 20/04/2011, à 21:10

Tomzz

Re : [Recherche] Logiciel de synchronisation "offline"

Ok
Si tu vas au bout de ton projet, ce serait sympa que tu le partage.
Parce que perso j'y vois une utilité immédiate wink
En fait ta bidouille est clairement mieux fichue que la mienne et si le fait d'utiliser le md5 ne ralenti pas trop le script, ça améliorerai sûrement la gestion des mises à jour de "mes" disques.

Hors ligne

#5 Le 20/04/2011, à 22:39

Zakhar

Re : [Recherche] Logiciel de synchronisation "offline"

Oh si, le MD5 ralentit considéraaaaaaaaaaaablement !..

En fait le find / stat / echo (en XML) est "quasi instantané" puisqu'il ne lit que les structures de contrôle de tes partitions et pas les fichiers eux-même. Tandis que le md5 lit tous les fichiers et en fait un calcul. Donc si ton volume de données à sauvegarder est dans les ordres de grandeurs de 1To, ça prend un temps considérable.

Mais pour optimiser, il y a l'option de ne faire le md5 que sur les fichiers qui ont changé depuis la fois d'avant. Ca nécessite de produire la liste différentielle, mais ça doit pouvoir se faire. Dans ces conditions, le md5 est très très très long la première fois, et ensuite devient "raisonnable".

Pour l'instant j'ai stoppé le truc sur une partie du XSLT. J'arrive bien à repérer les différences mais mes templates sont en temps quadratique alors qu'une opération ensembliste serait infiniment plus "propre" et surtout plus rapide.
En effet, XSLT 2.0 te permet des opérations comme :

A except B

Si A et B sont des séquences (par exemple des listes de nom de fichiers, c'est à dire pour XSLT des séquences de "strings"), alors A except B vaut : les éléments de A qui ne sont pas dans B !.. Soit pile poil ce qu'on cherche à obtenir, et tout ça en une instruction ensembliste for claire et explicite.

De même tu peux faire B except A, et l'intersection si tu veux lister les trucs identiques.

Mais pour ça... faut arriver à faire une séquence de "strings" et je butte sur ça. Je vais finir par demander aux "experts" sur la mailng list !..

Ensuite il faut fignoler tout ça car à la fin, une fois la sauvegarde mise à jour, il faut aussi mettre à jour la liste !..

Dernière modification par Zakhar (Le 20/04/2011, à 22:44)


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

Hors ligne