IBM Cloud Object Storage:使用CLI获取存储桶大小

问题描述

我正在尝试寻找一种自动在IBM Cloud上获取COS存储桶大小的任务的方法

我在不同帐户中有数十个存储桶,但仍然找不到使用IBM Cloud COS CLI获取此信息的方法,只是其他信息(例如存储桶名称等)。

解决方法

COS S3 API不返回存储桶的大小信息。因此,基于API的CLI也不会返回大小信息。

但这是通过遍历存储桶中各个对象的大小来找到存储桶大小的一种间接方法

ibmcloud cos objects --bucket <BUCKET_NAME> --output JSON | jq 'reduce (.Contents[] | to_entries[]) as {$key,$value} ({}; .[$key] += $value) | .Size'

输出以字节

为单位

您可能必须遍历存储桶名称,这些名称可能在Shell脚本中。对于帐户+资源组中的所有存储桶,请运行以下命令

ibmcloud cos buckets --output JSON

注意:在运行上述命令之前,请记住使用以下命令将COS服务CRN添加到配置中

ibmcloud cos config crn --crn <SERVICE_CRN>
,

遍历单个对象的答案确实是使用IBM Cloud CLI查找该信息的唯一(并且可能是最好的)方法,但是还有其他一些值得一提的完成方法。

如果您需要在命令行中优雅地执行此操作,则Minio Client提供了Linux风格的语法:

from scipy import stats
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import pylab

csv = 'Trendline.csv'

df = pd.read_csv(csv,header=None,decimal=",",sep=";",names=['x','y']).dropna()

x = df['x']
y = df['y']

# linear regression
slope,intercept,rvalue,pvalue,stderr = stats.linregress(x,y)
y_prime = slope*x+intercept
print ('y=%.6fx+(%.6f)'%(slope,intercept))
print('R2 value: ',rvalue**2)

# bivariate outliers identification
residual = y-y_prime
q1 = residual.quantile(0.25)
q3 = residual.quantile(0.75)
iqr = q3-q1
lower_boundary = q1-1.5*iqr
upper_boundary = q3+1.5*iqr

# plot
fig = plt.figure(tight_layout=True)
plt.rc('grid',linestyle='--')

ax1 = plt.subplot(311)
ax1.scatter (x,y,marker = '+',color ='black')
plt.setp(ax1.get_xticklabels(),visible=False)
ax1.grid (True)
plt.ylim(bottom=0)

pylab.plot(x,y_prime,'-',color='grey')
pylab.plot(x,y_prime+lower_boundary,y_prime+upper_boundary,color='grey')

fig.align_labels()
plt.ylim(bottom=0)
plt.show()

这将返回MiB中存储桶的大小。

此外,COS Resource Configuration API将直接返回一个mc du cos/$BUCKET 值,而不会遍历幕后的对象。尽管还没有正式的CLI实施(尽管正在实施中),但使用cURL或httpie查询存储桶相对容易。

bytes_used

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...