900 votes

Télécharger un seau S3 entier ?

J'ai remarqué qu'il ne semble pas y avoir d'option pour télécharger un dossier complet. s3 à partir de l'AWS Management Console.

Existe-t-il un moyen facile d'attraper tout ce qui se trouve dans un de mes godets ? Je pensais rendre le dossier racine public, en utilisant la fonction wget pour tout récupérer, et ensuite le rendre privé à nouveau, mais je ne sais pas s'il y a un moyen plus simple.

13 votes

Comme beaucoup de gens ici l'ont dit, aws s3 sync est le meilleur. Mais personne n'a signalé une option puissante : dryrun . Cette option vous permet de voir ce qui serait téléchargé depuis/vers s3 lorsque vous utilisez sync . Ceci est très utile lorsque vous ne voulez pas écraser le contenu de votre site local ou d'un seau s3. Voici comment elle est utilisée : aws s3 sync <source> <destination> --dryrun Je l'utilisais tout le temps avant de pousser du nouveau contenu vers un seau afin de ne pas télécharger des changements non désirés.

0 votes

Voici une vidéo rapide montrant aws s3 sync dans la pratique : youtube.com/watch?v=J2aZodwPeQk

0 votes

Voir 2021/09 réponse complète : stackoverflow.com/a/68981037/8718377

1668voto

Layke Points 10216

CLI D'AWS

Voir le " Référence des commandes de l'AWS CLI "pour plus d'informations.

AWS a récemment publié ses outils en ligne de commande, qui fonctionnent à peu près comme boto et peuvent être installés à l'aide des éléments suivants

sudo easy_install awscli

ou

sudo pip install awscli

Une fois installé, vous pouvez alors simplement exécuter :

aws s3 sync s3://<source_bucket> <local_destination>

Par exemple :

aws s3 sync s3://mybucket .

va télécharger tous les objets dans mybucket dans le répertoire courant.

Et va sortir :

download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt

Cela va télécharger tous vos fichiers en utilisant une synchronisation à sens unique. Il va pas supprime tous les fichiers existants dans votre répertoire actuel, sauf si vous spécifiez --delete et il ne modifiera ni ne supprimera aucun fichier sur S3.

Vous pouvez également effectuer une synchronisation de seau S3 à seau S3, ou de local à seau S3.

Consultez le documentation et autres exemples .

Alors que l'exemple ci-dessus montre comment télécharger un seau complet, vous pouvez également télécharger un dossier de manière récursive en exécutant la procédure suivante

aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive

Cela demandera au CLI de télécharger tous les fichiers et les clés de dossiers de manière récursive dans le répertoire PATH/TO/FOLDER dans le répertoire BUCKETNAME seau.

280 votes

Première manche aws configure et ajoutez votre access key y secret access key que l'on peut trouver aquí .

13 votes

Cliquez ici pour l'installateur Windows aws.amazon.com/cli . Il récupère l'identifiant de la clé d'accès à partir de la variable d'environnement "AWS_ACCESS_KEY_ID" et votre clé secrète à partir de "AWS_SECRET_ACCESS_KEY".

0 votes

Comment puis-je utiliser votre solution si je dois effectuer un filtrage pour le téléchargement ? Ma question : stackoverflow.com/questions/25086722/

185voto

philhq Points 1122

Vous pouvez utiliser s3cmd pour télécharger votre seau :

s3cmd --configure
s3cmd sync s3://bucketnamehere/folder /destination/folder

Il existe un autre outil que vous pouvez utiliser, appelé rclone . Il s'agit d'un exemple de code dans la documentation de Rclone :

rclone sync /home/local/directory remote:bucket

5 votes

C'est assez lent. Surtout si vous essayez de l'utiliser de manière incrémentielle. Existe-t-il une solution qui soit multithread afin de saturer la bande passante ?

0 votes

Les solutions inférieures sont meilleures, plus standard et ouvertes à davantage de plates-formes.

0 votes

Cela ne fonctionne pas pour les buckets des pays demandeurs (voir arxiv.org/help/bulk_data_s3 ) :-(

104voto

wedocando Points 271

J'ai utilisé plusieurs méthodes différentes pour copier des données Amazon S3 sur une machine locale, notamment s3cmd et le plus simple est de loin Cyberduck .

Il vous suffit d'entrer vos informations d'identification Amazon et d'utiliser l'interface simple pour télécharger, charger et synchroniser n'importe lequel de vos dossiers ou fichiers.

Screenshot

0 votes

Fonctionne très bien ! Disponible pour Windows et Mac (GPL).

0 votes

Cyberduck permet également de télécharger facilement des fichiers publics de manière anonyme - s3cmd semble exiger des informations d'identification.

0 votes

Fonctionne aussi très bien avec Transmit.

25voto

dworrad Points 124

Pour Windows, Navigateur S3 est le moyen le plus simple que j'ai trouvé. C'est un excellent logiciel, et il est gratuit pour une utilisation non commerciale.

4 votes

Je viens d'essayer l'option "Télécharger tous les fichiers vers..." (qui, je suppose, est équivalente à "télécharger tout le seau s3") et il m'a été répondu que j'avais besoin de la version Pro.

3 votes

Mise à jour : Mais j'ai pu télécharger un dossier entier dans le seau, ce qui était suffisant pour mes besoins...

0 votes

Oui, la version gratuite est assez limitée, vous pouvez tout sélectionner, et télécharger, mais limité à seulement 2 transferts simultanés.

12voto

jeremyjjbrown Points 2290

J'ai fait un peu de développement pour S3 et je n'ai pas trouvé de moyen simple de télécharger un seau entier.

Si vous voulez coder en Java, le jets3t lib est facile à utiliser pour créer une liste de seaux et itérer sur cette liste pour les télécharger.

Tout d'abord, obtenez un jeu de clés privées publiques à partir de la console de gestion AWS afin de pouvoir créer un objet S3service :

AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);

Ensuite, obtenez un tableau de vos objets buckets :

S3Object[] objects = s3Service.listObjects(YourBucketNameString);

Enfin, il faut itérer sur ce tableau pour télécharger les objets un par un :

S3Object obj = s3Service.getObject(bucket, fileName);
            file = obj.getDataInputStream();

J'ai mis le code de connexion dans un singleton threadsafe. La syntaxe try/catch nécessaire a été omise pour des raisons évidentes.

Si vous préférez coder en Python, vous pouvez utiliser Boto à la place.

Après avoir fait le tour de BucketExplorer, " Télécharger le seau entier " peut faire ce que vous voulez.

1 votes

À moins que vous n'ayez besoin d'une solution Java, utilisez la réponse ci-dessus concernant le cli aws.

1 votes

Créer un nouveau dossier et donc le même

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X