如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。