Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
¿Cómo obtener el tamaño de todos los archivos en un depósito S3 con control de versiones?

Sé que este comando puede proporcionar el tamaño de todos los archivos en un cubo:

 aws s3 ls mybucket --recursive --summarize --human-readable

Pero esto no tiene en cuenta el control de versiones .

Si ejecuto este comando:

 aws s3 ls s3://mybucket/myfile --human-readable

Mostrará algo como "100 MiB", pero puede tener 10 versiones de este archivo que serán más como "1 GiB" en total.

Lo más cercano que tengo es obtener los tamaños de cada versión de un archivo determinado:

 aws s3api list-object-versions --bucket mybucket --prefix "myfile" --query 'Versions[?StorageClass=`STANDARD`].Size' > /tmp/s3_myfile_version_sizes

Luego tome la suma de todos los tamaños de versión.

Pero tendría que volver a ejecutar este comando para cada archivo en un depósito.

¿Hay una manera más fácil de hacer esto?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede ejecutar list-object-versions en el depósito como un todo:

 aws s3api list-object-versions --bucket my-bucket --query 'Versions[*].Size'

Usa jq para resumirlo:

 aws s3api list-object-versions --bucket my-bucket --query 'Versions[*].Size' | jq add

O, si necesita una salida legible por humanos:

 aws s3api list-object-versions --bucket my-bucket --query 'Versions[*].Size' | jq add | numfmt --to=iec-i --suffix=B

También puede agregar un prefijo en caso de que desee saber el tamaño de una "carpeta" dada y tal vez obtener también la cantidad de objetos de versión:

 aws s3api list-object-versions --bucket my-bucket --prefix my-folder --query 'Versions[*].Size' | jq 'length|add'

O puede usar el filtrado jq para escribir filtros más complejos, por ejemplo, que incluyan solo objetos no actuales:

 aws s3api list-object-versions --bucket my-bucket --prefix my-folder | jq '[.Versions[]|select(.IsLatest == false)|.Size] | length,add'

Si jq no está disponible, el uso de la opción --output text de salida desafortunadamente da como resultado valores separados por tabuladores, así que aquí hay un truco para forzarlo a separar líneas y luego sumar el total :

 aws s3api list-object-versions --bucket my-bucket --query 'Versions[*].[Size,Size]' --output text | awk '{s+=$1} END {printf "%.0f", s}'

Si tiene una gran cantidad de objetos, podría ser mejor utilizar los datos proporcionados por el inventario de almacenamiento de Amazon S3 :

El inventario de Amazon S3 proporciona una salida de archivo sin formato de valores separados por comas (CSV) de sus objetos y sus metadatos correspondientes a diario o semanalmente para un depósito de S3 o un prefijo compartido (es decir, objetos que tienen nombres que comienzan con un común cuerda).

about 4 years ago · Santiago Trujillo Denunciar

0

Use CloudWatch, dará resultado con todas las versiones.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda