Je dois copier 400G de fichiers d'un volume de stockage de blocs élastiques vers un compartiment s3 ... Ce sont environ 300k fichiers de ~ 1Mb
J'ai essayé s3cmd et s3fuse , les deux sont vraiment, vraiment lents .. s3cmd a fonctionné pendant une journée complète, a déclaré qu'il avait terminé la copie, et quand j'ai vérifié le seau, rien ne s'était passé (je suppose que quelque chose s'est mal passé, mais au moins s3cmd ne s'est jamais plaint de rien)
S3Fuse travaille pour une autre journée complète et a copié moins de 10% des fichiers ...
Existe-t-il une meilleure solution pour cela?
J'utilise Linux (Ubuntu 12.04) bien sûr
Réponses:
Il existe plusieurs facteurs clés qui déterminent le débit de EC2 à S3:
En cas de transfert de grandes quantités de données, il peut être économiquement pratique d'utiliser une instance de calcul de cluster, car le gain effectif en débit (> 10x) est supérieur à la différence de coût (2-3x).
Bien que les idées ci-dessus soient assez logiques (bien que le plafond par thread ne le soit pas), il est assez facile de trouver des repères pour les sauvegarder. Vous en trouverez un particulièrement détaillé ici .
L'utilisation de 64 à 128 téléchargements parallèles (simultanés) d'objets de 1 Mo devrait saturer la liaison montante 1 Gbit / s qu'un m1.xlarge a et devrait même saturer la liaison montante 10 Gbit / s d'une instance de calcul de cluster (cc1.4xlarge).
Bien qu'il soit assez facile de modifier la taille de l'instance, les deux autres facteurs peuvent être plus difficiles à gérer.
la source
Ainsi, après de nombreux tests, le s3-parallel-put a fait l'affaire de manière impressionnante. Clairement la solution si vous avez besoin de télécharger un grand nombre de fichiers sur S3. Merci à cyberx86 pour les commentaires.
la source
Ajustez les valeurs de configuration AWS CLI S3 selon http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
Ce qui suit a augmenté la vitesse de synchronisation S3 d'au moins 8x!
Exemple:
la source
J'ai écrit une application console optimisée en C # ( CopyFasterToS3 ) pour ce faire. J'ai utilisé dans EBS vol, dans mon cas, il avait 5 dossiers avec plus de 2 millions de fichiers pour un montant de 20 Go. Le script exécuté en moins de 30 minutes.
Dans cet article, j'ai montré comment utiliser une fonction récursive avec parallèle. Vous pouvez le transcrire dans une autre langue.
Bonne chance!
la source
Il y a aussi: s3funnel , qui semble très ancien (2008) et quelques bugs ouverts, mais qui est toujours répertorié sur Amazon lui - même: amzn-lnk
la source
Essayez plutôt s4cmd, c'est vraiment plus rapide que s3cmd. Son adresse: https://github.com/bloomreach/s4cmd
la source
Essayez d'utiliser s3-cli au lieu de s3cmd. Je l'ai utilisé au lieu de s3cmd pour télécharger des fichiers dans mon compartiment s3 et cela a rendu mon déploiement plus rapide de près de 17 minutes (de 21 à 4 minutes)!
Voici le lien: https://github.com/andrewrk/node-s3-cli
la source