2009-04-14 7 views
21

J'ai une assez grande quantité de données (~ 30G, divisé en ~ 100 fichiers) Je voudrais transférer entre S3 et EC2: quand je lance les instances EC2 je voudrais copier les données de S3 à EC2 les disques locaux aussi rapidement que possible, et quand j'ai fini le traitement, je voudrais copier les résultats à S3.La méthode de copie la plus rapide/la plus efficace entre S3 et EC2?

Je suis à la recherche d'un outil qui va faire une copie rapide/parallèle des données dans les deux sens. J'ai plusieurs scripts piratés, y compris un qui fait un travail décent, donc je ne cherche pas de pointeurs vers des bibliothèques de base; Je cherche quelque chose rapide et fiable.

Répondre

1

Je pense que vous feriez mieux d'utiliser un Elastic Block Store pour stocker vos fichiers au lieu de S3. Un EBS s'apparente à un «lecteur» sur S3 qui peut être monté dans votre instance EC2 sans avoir à copier les données à chaque fois, ce qui vous permet de conserver vos données entre les instances EC2 sans avoir à écrire ou à lire à chaque fois.

http://aws.amazon.com/ebs/

+3

C'est une bonne suggestion. Le seul inconvénient des volumes EBS est qu'ils peuvent uniquement être montés sur une instance qui s'exécute dans la même zone de disponibilité que le volume. Par exemple. un volume dans us-east-1a ne peut pas être utilisé par une instance dans us-east-1b. Donc, si l'on ne peut pas ou ne préférerait pas exécuter une instance dans cette zone (en raison de problèmes, ou simplement d'un manque de capacité), on ne peut pas utiliser le volume. –

+2

Ce n'est pas ainsi que fonctionne EBS. EBS n'est PAS un lecteur sur S3. EBS ne lit/n'écrit pas de données sur S3, sauf lors de la création d'un instantané ou de la création d'un volume EBS à partir d'un instantané. –

+0

Je ne voulais pas dire que * c'était * un lecteur sur S3, je voulais dire que c'était * comme * un lecteur - si vous voulez utiliser un stockage de type S3 comme vous le feriez avec un lecteur, EBS est un bon choix . –

33

Malheureusement, la suggestion d'Adam ne fonctionnera que sa compréhension de l'EBS est mauvaise (même si je souhaite qu'il avait raison et moi-même souvent pensé il devrait fonctionner de cette façon) ... comme EBS n'a rien à voir avec S3, mais cela ne vous donnera qu'un "lecteur externe" pour les instances EC2 séparées, mais connectables aux instances. Vous devez toujours faire une copie entre S3 et EC2, même s'il n'y a pas de coûts de transfert de données entre les deux.

Vous n'avez pas mentionné un système d'exploitation de votre instance, donc je ne peux pas donner d'informations personnalisées. Un outil de ligne de commande populaire que j'utilise est http://s3tools.org/s3cmd ... il est basé sur Python et par conséquent, selon les informations sur son site Web, il devrait fonctionner sur Win ainsi que Linux, bien que je l'utilise TOUJOURS sur Linux. Vous pouvez facilement créer un script rapide qui utilise sa commande "sync" intégrée qui fonctionne de la même façon que rsync et qui est déclenchée chaque fois que vous avez fini de traiter vos données. Vous pouvez également utiliser les commandes put et get récursives pour obtenir et mettre des données uniquement en cas de besoin.

Il existe des outils graphiques comme Cloudberry Pro qui ont également des options de ligne de commande pour Windows que vous pouvez configurer des commandes de planification. http://s3tools.org/s3cmd est probablement le plus facile.

+0

Bonne réponse, mais peut-être que ça vaut la peine de noter que s3cmd ne supporte pas l'option --delete avec sync, ce qui signifie que si vous supprimez quelque chose sur la source, il restera sur la destination :( – golja

+0

Avec mes scripts de sauvegarde, j'aurais pu jurer qu'il y avait un moyen --delete de travailler avec la synchronisation - même si je me souviens qu'il faut un peu de fandangling pour avoir raison ... Le script m'a fait gagner beaucoup de temps dans de nombreux domaines! – Tyler

+0

Bit réponse tardive - ma réponse ne suggérait pas d'utiliser EBS pour copier entre S3 et EC2, mais * à la place * de S3 Je mettrai à jour pour clarifier –

1

Installation s3cmd Package comme

yum install s3cmd 

ou

sudo apt-get install s3cmd 

en fonction de votre système d'exploitation

puis copier les données avec ce

s3cmd get s3://tecadmin/file.txt 

aussi ls peut lister les fichiers.

pour plus detils voir this

0

Maintenant, il y a une commande de synchronisation dans les outils de ligne de commande AWS, qui devrait faire l'affaire: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Au démarrage: aws s3 synchronisation s3: // MyBucket/mylocalfolder

avant l'arrêt: aws s3 synchronisation/mylocalfolder s3: // MyBucket

Bien sûr, les détails sont toujours amusant à wo RK par exemple. comment peut-il être parallèle (et pouvez-vous le rendre plus parallèle et est-ce plus rapide que la nature virtuelle de l'installation entière)

Btw espérons que vous travaillez encore sur ce ... ou quelqu'un l'est. ;)

0

Pour moi, la meilleure forme est:

wget http://s3.amazonaws.com/my_bucket/my_folder/my_file.ext 

de PuTTy

Questions connexes