Saltar al contenido

Subir archivos a la cuenta S3 desde la línea de comandos de Linux

Estate atento ya que en esta división encontrarás la contestación que buscas.

Solución:

Amazon también ofrece sus propias herramientas CLI ahora.

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 Carga y descarga de archivos, sincronización de directorios y creación de 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, activadas desde cron, etc.

Si no puede (tal vez está en un host compartido) o no desea 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="PUTnn$contentTypen$dateValuen$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í. los -L La opción 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 script más complejo.

Comentarios y calificaciones del post

Acuérdate de que puedes optar por la opción de parafrasear tu experiencia si diste con la solución.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *