2017-03-31 85 views
1

我知道這個命令可以提供所有文件的大小水桶:如何通過版本控制獲取S3存儲桶中所有文件的大小?

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

但這並不佔versioning

如果我運行此命令:

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

它會顯示類似「100 MIB」,但它可能有10個版本的文件,這將是更喜歡「1吉布」總的。

我有越來越的給定文件的每一個版本的尺寸最接近的:

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

然後採取所有版本大小的總和。

但我將不得不在一個桶中的每個文件重新運行此命令。

有沒有更簡單的方法來做到這一點?

回答

0

可以作爲一個整體在運行list-object-versions

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

使用--output text選項不幸導致製表符分隔值,所以這裏是一個黑客,迫使它分開行,然後加佔總

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

如果你有大量的對象,它可能是更好的使用由提供的數據:

亞馬遜S3庫存提供一個逗號分隔值(CSV)的對象的平面文件輸出和它們相應的元數據的S3桶或共享前綴的每日或每週的基礎上(即,名稱以公共字符串開頭的對象)。

相關問題