2017-02-06 2 views
0

Je regarde la documentation de aws cli et je ne trouve pas le moyen de copier les seuls fichiers dans une structure de répertoires à un autre seau avec la structure "aplatie" (je veux un répertoire et tous les fichiers à l'intérieur de celui-ci).copier des fichiers entre seaux s3 sans dossiers amazon aws cli

par exemple

/a/b/c/1.pg 
/a/2.jpg 
/a/b/3.jpg 

je voudrais avoir dans différents seau:

/x/1.jpg 
/x/2.jpg 
/x/3.jpg 

Est-ce que je manque quelque chose ou est-il impossible? Avez-vous une idée de comment pourrais-je faire cela?

+0

Qu'en est-il des fichiers avec des noms similaires? –

Répondre

1

Vous n'avez pas besoin de télécharger des fichiers localement, comme suggéré dans une autre réponse. Au lieu de cela, vous pouvez écrire un script shell ou quelque chose qui effectue les opérations suivantes:

  • Run ls sur s3://bucket1 pour obtenir des noms entièrement qualifiés de tous ses fichiers.
  • Pour chaque fichier, exécutez cp pour le copier depuis l'emplacement actuel à s3://bucket2/x/
+0

Je devais y aller avec celui-ci – fr3ak

0

En supposant que vous avez configuré aws cli sur le système et en supposant que les deux compartiments se trouvent dans la même région. Qu'est-ce que vous pouvez faire est d'abord déchargez le seau s3 sur votre machine locale en utilisant:

aws s3 sync s3://originbucket /localdir/ 

après cela, utilisez une commande find pour obtenir tous les fichiers dans un répertoire

find /localdir/ -type f -exec mv {} /anotherlocaldir/ 

Enfin, vous pouvez télécharger à nouveau les fichiers sur s3!

aws s3 sync /anotherlocaldir/ s3://destinationbucket 
+0

bien, cela fonctionnerait probablement si j'avais suffisamment d'espace sur le disque ... – fr3ak

+0

Je ne pense pas que s3 le permettra pour diverses raisons, et si vous aviez 1.jpg sous différentes structures de répertoires? quel fichier considérerait-il alors! –

0

Voici quelques exemples pour votre référence:

aws s3 synchronisation /a/b/c/1.pg s3: // bucketname/

aws s3 synchronisation /a/2.jpg s3: // bucketname/

aws s3 synchronisation /a/b/3.jpg s3: // bucketname/

Pour synchroniser tout le contenu d'un répertoire au seau S3:

aws s3 synchronisation/directoryPath/s3: // bucketname/

AWS référence url: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html