Amazon fournit désormais également ses propres outils CLI.
À partir de http://aws.amazon.com/cli/
En utilisant une syntaxe familière, vous pouvez afficher le contenu de vos compartiments S3 dans une liste basée sur un répertoire.
$ aws s3 ls s3://mybucket LastWriteTime Length Name ------------- ------ ---- PRE myfolder/ 2013-09-03 10:00:00 1234 myfile.txt ...
Vous pouvez effectuer des chargements et des téléchargements récursifs de plusieurs fichiers dans une seule commande au niveau du dossier. L'AWS CLI exécutera ces transferts en parallèle pour des performances accrues.
$ aws s3 cp myfolder s3://mybucket/myfolder --recursive upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt ...
Une commande de synchronisation facilite la synchronisation du contenu d'un dossier local avec une copie dans un compartiment S3.
$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp upload: myfolder/newfile.txt to s3://mybucket/myfolder/newfile.txt ...
La documentation pour les commandes liées aux fichiers est ici.
S3cmd fait ce que tu veux. Charger et télécharger des fichiers, synchroniser des répertoires et créer des compartiments.
S3cmd est un outil de ligne de commande gratuit et un client pour télécharger, récupérer et gérer des données dans Amazon S3 et d'autres fournisseurs de services de stockage en nuage qui utilisent le protocole S3, tels que Google Cloud Storage ou DreamHost DreamObjects. Il convient mieux aux utilisateurs expérimentés qui connaissent les programmes en ligne de commande. Il est également idéal pour les scripts batch et les sauvegardes automatisées sur S3, déclenchées depuis cron, etc.
Si vous ne pouvez pas (vous êtes peut-être sur un hôte partagé) ou si vous ne voulez pas installer d'outils supplémentaires, il est possible d'utiliser simplement bash, curl et openssl.
http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
file=/path/to/file/to/upload.tar.gz
bucket=your-bucket
resource="/${bucket}/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=xxxxxxxxxxxxxxxxxxxx
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -L -X PUT -T "${file}" \
-H "Host: ${bucket}.s3.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3.amazonaws.com/${file}
Notez que j'ai modifié ce script à partir de celui du lien ci-dessus. J'ai ajouté le -L
car AWS peut y insérer une redirection. Le -L
suivra la redirection pour vous.
Une autre mise en garde. Cela ne fonctionnera pas pour les fichiers de plus de 5 Go. Ceux-ci nécessitent un téléchargement en plusieurs parties qui nécessiterait un script plus complexe.