2013-02-18 4 views
3

J'utilise actuellement Amazon S3 pour héberger tout le contenu statique sur mon site. Le site a beaucoup de fichiers statiques, j'ai donc besoin d'une façon automatisée de synchroniser les fichiers sur mon localhost avec les fichiers distants. Je le fais actuellement avec la fonction de synchronisation de s3cmd, qui fonctionne à merveille. Chaque fois que j'exécute mon script de déploiement, seuls les fichiers qui ont été modifiés sont téléchargés, et tous les fichiers qui ont été supprimés sont également supprimés dans S3.Existe-t-il un équivalent de la synchronisation s3cmd d'Amazon S3 pour Rackspace Cloud Files?

Je voudrais essayer Rackspace CloudFiles; Cependant, je n'arrive pas à trouver quelque chose qui offre la même fonctionnalité. Y at-il de toute façon à accomplir cela sur Rackspace Cloud Files à court d'écrire mon propre utilitaire de synchronisation? Il doit avoir une interface de ligne de commande et fonctionner sous OS X.

Répondre

0

Le Rackspace Python SDK peut le faire pour vous. Il y a un script appelé cf_pyrax.py qui fait plus ou moins ce que je pense que vous essayez de faire. Il y a un écrit dessus dans ce blog post.

+0

Hmm, j'espère vraiment que ce n'est pas la meilleure option. Il faudra bien plus de 24 heures pour télécharger 100 000 fichiers, alors que la même opération prend moins de 30 minutes avec s3cmd. Pas encore sûr si la différence est Rackspace, le SDK, ou les deux. –

+0

Hmmmm ... ça ne sonne pas bien. Essayons d'aller au fond de ceci. Ouvrez un problème sur https://github.com/rackspace/pyrax/issues avec autant de détails que possible (bande passante, temps de copie des fichiers, type de fichiers, etc.). Incluez le code si vous le pouvez. –

2

Le pyrax SDK pour Rackspace Cloud a la méthode sync_folder_to_container() pour les fichiers cloud qui ressemble à ce que vous cherchez. Il ne téléchargera que les fichiers nouveaux/modifiés et supprimera éventuellement les fichiers du cloud supprimés localement.

En ce qui concerne le téléchargement initial, j'utilise habituellement eventlet pour télécharger des fichiers de façon aussi asynchrone que possible. Le temps total sera toujours limité par vos vitesses de téléchargement (je ne connais aucun SDK qui puisse contourner cela), mais le code non bloquant aidera certainement les performances globales.

Si vous avez d'autres questions, n'hésitez pas à demander ici sur la page GitHub.

- Ed Leafe

Questions connexes