前一篇文章写的是如何获取阿里云的云存储容量方法,现在说一下金山云。
金山云的云存储是不支持sdk的,他的sdk支持面只有以下这么几项:
既然sdk这条路不好使,我们就换一个道,使用金山云提供的ks3util工具。
首先先查看机器是否有java,使用命令#java -version,得到返回值如下:
然后下载ks3util工具,使用命令#wget https://ks3-cn-beijing.ksyun.com/ks3-tools/ks3util-1.1.1-dist.zip ,然后解压这个文件,进入这个ks3util-1.1.1-dist之后会看到四个文件,分别是:bin、lib、README.html和sample.conf。
首先我们先打开sample.conf,查看这个配置文件内容:
ks3.ak={账户AK} #必填项 ks3.sk={账户SK} #必填项 ks3.endpoint={bucket所在region的endpoint} #必填项 ks3.protocol={协议:http|https} #可选,如果不选就自动认为是http #http.conn.timeout={http连接超时,一般不需要更改} #可选 #http.so.timeout={http通讯超时,一般不需要更改} #可选 #http.max.connections{http连接数,默认值:100} #可选 #async.queuesize={批量处理时的队列长度,默认:200,该值越大内存使用率越大} #可选 #async.max.threads={批量处理时最大并发数,默认:100} #可选 #async.core.threads={批量处理时最小并发数,默认:CPU核数} #可选 #ks3.movedest.ak={multi-move操作时的目标账号AK} #可选 #ks3.movedest.sk={multi-move操作时的目标账号SK} #可选 #ks3.movedest.endpoint={multi-move操作时的目标Bucket所在的endpoint} #可选
只有前三项是必须填写的,其他项是针对特殊需求填写。按照实际情况来填写sample.conf,这里我们为了安全,在ks3.protocol里先选择https协议,如图:
保存退出之后,在bin文件夹里#chmod 755 ks3util。
现在假设我们要获取js-func-test-pubilc这个bucket的大小,在网页控制台上看它的大小是1.94G。
于是我们就在命令行里输入#./ks3util du -b js-func-test-pubilc -c /root/ks3util-1.1.1/sample.conf,-b后面写的是bucket名称,-c后面写的是配置文件路径。
得到的效果如下图:
获得了1.94GB!
如果你觉得http方式很不好,非要使用https的话,那么就在配置文件的ks3.protocol的字段写成https,但是要注意,这样改完,很有可能再获取容量值的时候会失败,显示“Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure”这个错误,这是因为Jdk8 jce安全机制导致访问https会报错。
这个时候去http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 下载UnlimitedJCEPolicyJDK7.zip,然后将这个文件解压缩,将里面的两个jar包去覆盖jdk安装目录下的jre\lib\security\下同名的jar包就能解决。
如果你又觉得每次在命令行里面加入“-c 配置文件地址”很讨厌,而且这个配置文件又包含了很重要的ak和sk,那么可以把这个配置文件放到/root里然后改名叫.ks3utilconfig,这样每次在命令行里输入就不用再带后面的文件路径了。
最后再说一句,这个方法虽然简单,但是获取值的速度很慢,上面那个例子里获取不到2G的时间大约是4600毫秒,如果获取大约10TB的容量值,估计要跑大约5~6个小时。比如我这个跑了6个小时的血淋淋例子:
最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!