Quel est le meilleur moyen de synchroniser de grandes quantités de données à travers le monde?

StackOverflow https://stackoverflow.com/questions/233966

Question

J'ai beaucoup de données à synchroniser sur 4 ou 5 sites à travers le monde, environ un demi-téraoctet par site. Cela change (ajoute ou change) d’environ 1,4 Go par jour et les données peuvent changer sur l’un des quatre sites.

Un grand pourcentage (30%) des données sont des packages en double (peut-être des JDK empaquetés), de sorte que la solution devrait inclure un moyen de détecter le fait qu'il existe de telles choses sur la machine locale et récupérez-les au lieu de les télécharger depuis un autre site.

Le contrôle de la gestion des versions n’est pas un problème, il ne s’agit pas d’une base de code en tant que telle.

Je suis simplement intéressé par des solutions (de préférence open-source) qui s’approchent d’une telle chose?

Mon script bébé qui utilise rsync ne coupe plus la moutarde, j'aimerais effectuer une synchronisation plus complexe et intelligente.

Merci

Éditer: cela devrait être basé sur UNIX:)

Était-ce utile?

La solution

Avez-vous essayé Unison ?

J'ai eu de bons résultats avec. C'est fondamentalement un rsync plus intelligent, qui est peut-être ce que vous voulez. Il existe une liste comparant les outils de synchronisation de fichiers ici .

Autres conseils

Cela ressemble à un travail pour BitTorrent.

Pour chaque nouveau fichier sur chaque site, créez un fichier de base bittorrent et placez-le dans un répertoire centralisé accessible par le Web.

Chaque site télécharge ensuite (via BitTorrent) tous les fichiers. Cela vous permettra de partager la bande passante et de réutiliser automatiquement la copie locale.

La recette réelle dépendra de vos besoins. Par exemple, vous pouvez créer un fichier de départ bittorrent pour chaque fichier sur chaque hôte et définir une heure de modification du fichier de départ identique à celle du fichier lui-même. Comme vous le ferez tous les jours (horaire?), Il vaut mieux utiliser quelque chose comme "make". pour (re) créer des fichiers de départ uniquement pour des fichiers nouveaux ou mis à jour.

Ensuite, vous copiez tous les fichiers de départ de tous les hôtes vers l'emplacement centralisé ("traqueur dir") avec l'option "écraser uniquement si plus récent". Cela vous donne un ensemble de graines de torrent pour toutes les copies les plus récentes de tous les fichiers.

Ensuite, chaque hôte télécharge tous les fichiers de départ (à nouveau, avec l'option "Écraser si nouveau paramètre") et lance le téléchargement bittorrent sur chacun d'entre eux. Ceci téléchargera / retellera tous les fichiers nouveaux / mis à jour.

Rincez et répétez tous les jours.

BTW, il n'y aura pas de "téléchargement à partir de lui-même", comme vous l'avez dit dans le commentaire. Si le fichier est déjà présent sur l'hôte local, sa somme de contrôle sera vérifiée et aucun téléchargement n'aura lieu.

Que diriez-vous d'un système de fichiers global de Red Hat, afin que l'ensemble de la structure soit réparti sur chaque site sur plusieurs périphériques, plutôt que de tout répliquer à chaque emplacement?

Ou peut-être un système de stockage réseau commercial tel que LeftHand Networks (avertissement - j'ai aucune idée sur le coût, et ne les ont pas utilisés).

Vous avez beaucoup d'options:

  • Vous pouvez essayer de configurer la base de données répliquée pour stocker les données.
  • Utilisez une combinaison de rsync ou lftp et de scripts personnalisés, mais cela ne vous convient pas.
  • Utiliser des git repo avec un maximum de compressions et les synchroniser entre eux à l'aide de certains scripts
  • La quantité de données étant plutôt importante et probablement importante, effectuez un développement personnalisé en engageant un expert;)

Check out out super flexible .... c'est plutôt cool, je ne l'ai pas utilisé dans un environnement à grande échelle, mais sur un système à 3 nœuds, cela semblait fonctionner parfaitement.

Cela ressemble à un travail pour Foldershare

Avez-vous essayé le correctif detect-renommé pour rsync ( http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff )? Je ne l'ai pas essayé moi-même, mais je me demande s'il détectera non seulement les fichiers renommés, mais également les fichiers en double. S'il ne détecte pas les fichiers en double, j'imagine qu'il sera peut-être possible de modifier le patch pour le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top