Quel est un moyen pratique de mettre en miroir un compartiment Amazon S3?

9

Je veux refléter mes godets Amazon S3. Je veux le faire parce que 1) je ne veux pas que toutes mes données n'existent qu'avec un seul fournisseur; et 2) en cas d'erreur logicielle ou d'atteinte à la sécurité, je souhaite que les données soient sauvegardées.

Je peux mettre en miroir un disque local avec la fonction de synchronisation s3cmd, mais cela n'est pas adapté aux très grands compartiments et n'est pas utile pour les restaurations de sauvegarde rapides. Je préfère que mes données soient reflétées par un concurrent comme Rackspace Cloud Files.

Quelqu'un a-t-il des suggestions sur un moyen simple et robuste pour faciliter ce type de mise en miroir de manière automatisée sur une boîte Linux?

Ben
la source
Ai-je raison de supposer qu'aucune des réponses ne résout réellement "1) Je ne veux pas que toutes mes données n'existent qu'avec un seul fournisseur", car elles reflètent toutes des compartiments au sein du même fournisseur?
Chris

Réponses:

6

Vous pouvez utiliser l' utilitaire " s3cmd " avec l'option "sync", bien que je suis tombé sur votre question parce que j'essaie de savoir si ce mécanisme de synchronisation est en train de bousiller mes sauvegardes de duplicité.

jberryman
la source
c'est en effet la meilleure solution que j'ai trouvée s3tools.org/s3cmd-sync
John Bachir
5

J'avais le même problème, alors j'ai concocté un petit programme spécialement conçu pour mettre en miroir un compartiment S3 à un autre; Je l'appelle s3s3mirror.

J'ai d'abord essayé l'approche "s3cmd sync", mais j'avais un seau avec des centaines de milliers d'objets dedans, et "s3cmd sync" était juste là, ne faisant rien mais consommant de plus en plus de mémoire jusqu'à la mort de mon système. J'ai conçu s3s3mirror pour démarrer immédiatement, pour utiliser 100 threads simultanés (configurables) et pour faire un usage modeste du processeur et de la mémoire. Si je le dis moi-même, c'est assez rapide.

Je l'ai mis à disposition sur github sous une licence Apache. Si vous décidez de faire un tourbillon, faites-moi savoir ce que vous en pensez et s'il y a quelque chose à améliorer.

Voici le lien: https://github.com/cobbzilla/s3s3mirror

Merci!

  • jonathan.
cobbzilla
la source
Merci pour votre travail, j'en ai fait un exécutable docker container et je l'utilise déjà en production: github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos
4

Amazon a maintenant un outil pris en charge pour ce faire, le aws cli .

Il peut refléter dans les deux sens entre local et distant, ou entre deux emplacements s3.

Malheureusement, il n'a pas de support direct pour les emplacements non S3 comme rackspace, mais j'ai pensé que ce serait une réponse utile pour certains qui trouvent cette question. Comme moi, avant de le trouver.

En particulier,

aws s3 sync s3://some/s3/path /some/local/path
Dan Pritts
la source
2

Découvrez Jungle Disk Server . Il fonctionne avec Amazon S3 et Rackspace Cloud Files. Vous pouvez monter S3 et CF à différents emplacements sur votre système de fichiers, puis utiliser rsync entre les deux.

Alan Ivey
la source
Merci, mais j'aurais dû mentionner que je cherche une solution que je peux exécuter en tant que tâche cron sur une machine Linux. J'ai mis à jour la question.
Ben
2

Vous pouvez essayer de monter les godets avec fusible en utilisant s3fs . Une fois cela fait, vous pouvez ensuite rsync du point de montage vers votre disque local.

grandir
la source
1
+1 pour s3fs, je viens de valider un correctif pour prendre en charge des fichiers jusqu'à 5 To.
ben lemasurier
1

Vous pouvez configurer le serveur Minio , l'open source et l'API compatible S3. Vous pouvez le configurer sur EC2 ou sur n'importe quel fournisseur de cloud en tant que serveur alternatif et en utilisant la commande des clients Minio, mc mirror prenez régulièrement le miroir de S3. Vous pouvez automatiser la même écriture d'un simple script cron.

J'espère que cela aide. Avertissement: je travaille pour Minio

koolhead17
la source
1

Pour la synchronisation en ligne des compartiments, vous pouvez utiliser la réplication entre régions. De cette façon, toutes les mises à jour du compartiment d'origine seront automatiquement synchronisées avec le compartiment S3 dans une autre région: https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html

Gardez à l'esprit qu'il nécessite une version activée pour le compartiment, donc si vous effectuez des mises à jour / suppressions d'objets dans des compartiments, vous souhaiterez activer la politique de cycle de vie pour supprimer les anciens objets.

timurb
la source
C'est ce que nous avons choisi d'utiliser, mais notez que la réplication n'est pas la même chose que la mise en miroir. La grande différence est que les suppressions ne sont pas propagées entre la source et la destination (la destination mettra à jour les fichiers qui changent, mais semble ne jamais les supprimer).
Scott Gartner