web-dev-qa-db-fra.com

Copier plusieurs fichiers du compartiment s3

Je ne parviens pas à télécharger plusieurs fichiers à partir des compartiments AWS S3 sur mon ordinateur local. 

J'ai tous les noms de fichiers que je veux télécharger et je ne veux pas d'autres. Comment puis je faire ça ? Existe-t-il une boucle dans aws-cli pour effectuer des itérations?

Il y a quelques centaines de fichiers à télécharger, de sorte qu'il ne semble pas possible d'utiliser une seule commande prenant tous les noms de fichiers comme arguments. 

7
DQI

Il y a un script bash qui peut lire tous les noms de fichiers d'un fichier filename.txt

#!/bin/bash  
set -e  
while read line  
do  
  aws s3 cp s3://bucket-name/$line dest-path/  
done <filename.txt
9
Rajan

Vous pouvez également utiliser l'option --recursive, comme décrit dans la commande documentation for cp. Il copiera tous les objets sous un préfixe spécifié de manière récursive. Par exemple.:

aws s3 cp s3://folder1/folder2/folder3 . --recursive

va récupérer tous les fichiers sous folder1/folder2/folder3 et les copier dans le répertoire local.

8
siphiuel

Vous voudrez peut-être utiliser "sync" au lieu de "cp". Les éléments suivants téléchargeront/synchroniseront uniquement les fichiers portant l’extension ".txt" dans votre dossier local:

aws s3 sync --exclude="*" --include="*.txt" s3://mybucket/mysubbucket .
7
f.cipriani

Selon le doc vous pouvez également utiliser les filtres include et exclude avec s3 cp. Donc, vous pouvez faire quelque chose comme ça:

aws s3 cp s3://bucket/folder/ . --recursive --exclude="*" --include="2017-12-20*"

Assurez-vous que l'ordre des filtres exclude et include est correct, car cela pourrait changer tout le sens.

3
geekgunda