Amazon ahora también proporciona sus propias herramientas CLI.
Desde http://aws.amazon.com/cli/
Usando una sintaxis familiar, puede ver el contenido de sus depósitos S3 en una lista basada en directorios.
$ aws s3 ls s3://mybucket
LastWriteTime Length Name
------------- ------ ----
PRE myfolder/
2013-09-03 10:00:00 1234 myfile.txt
...
Puede realizar cargas y descargas recursivas de varios archivos en un solo comando a nivel de carpeta. La CLI de AWS ejecutará estas transferencias en paralelo para mejorar el rendimiento.
$ 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
...
Un comando de sincronización facilita la sincronización del contenido de una carpeta local con una copia en un depósito S3.
$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp
upload: myfolder/newfile.txt to s3://mybucket/myfolder/newfile.txt
...
La documentación para los comandos relacionados con archivos está aquí.
S3cmd hace lo que quieres Cargar y descargar archivos, sincronizar directorios y crear depósitos.
S3cmd es una herramienta de línea de comandos gratuita y un cliente para cargar, recuperar y administrar datos en Amazon S3 y otros proveedores de servicios de almacenamiento en la nube que usan el protocolo S3, como Google Cloud Storage o DreamHost DreamObjects. Es más adecuado para usuarios avanzados que están familiarizados con los programas de línea de comandos. También es ideal para secuencias de comandos por lotes y copias de seguridad automatizadas en S3, desencadenadas desde cron, etc.
Si no puede (tal vez está en un host compartido) o no quiere instalar herramientas adicionales, es posible usar bash, curl y 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}
Tenga en cuenta que modifiqué este script del que se encuentra en el enlace anterior. Agregué el -L
opción porque AWS puede insertar una redirección allí. El -L
seguirá la redirección por ti.
Otra advertencia. Esto no funcionará para archivos de más de 5 GB. Esos requieren una carga de varias partes que requeriría un guión más complejo.