【云】对象存储服务亚马逊云S3、腾讯云cos、阿里云oss的命令行工具使用方式整理 - DarkAthena

时间:2024-03-07 11:17:35

【云】对象存储服务亚马逊云S3、腾讯云cos、阿里云oss的命令行工具使用方式整理

前言

对象存储服务,简单来说,可以把它当成一个“网盘”,可以上传下载数据,也可以直接在这个“网盘”中对文件进行某些操作。

我之前所在部门收到的,涉及到第三方合作的数据分析项目,自从对象存储服务开始流行起来后,大多都使用了这些对象存储服务。这些项目在技术方面,内部几乎完全交给了我一个人,正好给了我学习这个东西的经验。

我为什么要写一篇这样的文章呢,背景是这样的
这3个对象存储服务,都是有各种开发环境sdk的,其他公司大多会选择使用java/python/.NET等来开发数据导出及同步的服务。而我所在部门,当时并没有专职的开发人员,而且也很难从公司申请到硬件资源来部署服务。
我能用的仅有一台很早之前申请的windows服务器。

所以对于这些项目,我大致的方案为
1.定时或者基于某种条件自动地,每天从数据库中导出指定格式的数据,生成文件,保存到服务器本地指定目录内
2.使用对应的命令行工具,对服务器本地指定目录和对象存储服务中的指定目录,以完全同步的方式进行上传

对于第1步,我用bat写了个通用的数据导出就解决了(【BAT】在windows环境下使用cmd批处理实现多数据来源的多份数据导出及管理)。对于第2步,由于之前完全没接触过,就只能翻官方文档看了
亚马逊云 S3 - https://aws.amazon.com/cn/cli/
腾讯云 COS - https://cloud.tencent.com/document/product/436/10976
阿里云 OSS - https://help.aliyun.com/document_detail/50452.html

下面以入门视角来一个一个进行说明

一、S3的命令行工具安装及使用

1.安装

打开官方文档,可以看到有两种方式
image.png
对于windows环境,官方建议下载安装程序,我当时就踩了这个坑。
这个windows版本的aws命令行工具,实际安装后,是通过python环境来执行的,如果本地服务器上没有安装python,那么这个安装程序自带一个2.*版本python并进行自动安装。这种情况下,在执行同步命令的时候,会有满屏的unicode报错,

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

虽然实际同步还是成功的,但是如果要看日志就很痛苦了。当然如果之前就安装了python3再安装这个windows版本的工具也没问题。
不过服务器上老是要安装什么程序是特别不爽的,其实如果我们的windows服务器上如果有python环境,完全可以使用官方提供的第二个方案,直接pip安装

pip install awscli

这个问题官方也有记录,2013年有人第一次提出,但直到2019年官方才解决,6年解决一个这样的问题也真是“高效”
https://github.com/aws/aws-cli/issues/424

2.配置

在cmd下执行

aws configure

按提示输入对应的账号信息,如果为空则直接回车

AWS Access Key ID [None]: accesskey
AWS Secret Access Key [None]: secretkey
Default region name [None]: us-west-2
Default output format [None]: 

配置完成后,就可以使用其同步文件的命令了。

aws s3 sync E:\upload s3://upload/

但是,这个配置方式是交互式的,不能简单地通过*.bat文件一步到位,而且这个配置只会保存在执行该配置的操作系统用户下,如果是使用操作系统的其他用户来同步文件,那么需要再重新配置。
不过我找到一个方法,可以使用临时环境变量来配置

set AWS_ACCESS_KEY_ID=accesskey
set AWS_SECRET_ACCESS_KEY=secretkey
set AWS_DEFAULT_REGION=us-west-2
call aws s3 sync E:\upload s3://upload/
exit

set AWS_ACCESS_KEY_ID=accesskey
set AWS_SECRET_ACCESS_KEY=secretkey
call aws s3 sync E:\upload s3://upload/ --region us-west-2
exit

保存以上两段中的任意一段为*.bat文件,然后设置一个定时任务去执行,就能完成自动同步了。

3.日常手工维护命令

列举几个常用的例子

查看目录

aws s3 ls s3://upload/

同步所有文件(基于文件md5自动识别增加或者变化的文件进行上传)

aws s3 sync E:\upload s3://upload/

上传指定文件到指定目录

aws s3 cp E:\upload\123.zip s3://upload/123.zip

删除指定文件

aws s3 rm s3://upload/123.zip

其他操作及详细说明请查看官方文档
https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3-commands.html

二、cos的命令行工具安装及使用

1.安装

如果有python环境,直接pip安装,同样和前面一样,建议用 3.*版本的python
(注意:py环境要用administrator用户使用管理员权限安装,选择自定义安装,一定要勾上 “FOR ALL USER” 和 “ADD PATH”)

pip install coscmd

2.配置

cos和S3不一样,coscmd倒是直接提供了命令行配置方式

coscmd config -a AChT4ThiXAbpBDEFGhT4ThiXAbp**** -s WE54wreefvds3462refgwewe**** -b configure-bucket-1250000000 -r ap-chengdu

所以自动同步文件的bat脚本内容为

call coscmd config -a AChT4ThiXAbpBDEFGhT4ThiXAbp**** -s WE54wreefvds3462refgwewe**** -b configure-bucket-1250000000 -r ap-chengdu
call coscmd upload -rs E:\upload data/upload 
exit

3.日常手工维护命令

–执行同步(跳过MD5重复文件)

coscmd upload -rs E:\upload data/upload 

–执行同步(忽略txt和doc后缀的文件)

coscmd upload -rs /data/examplefolder data/examplefolder --ignore *.txt,*.doc

–执行同步(不校验重复,强制覆盖)
“-rs” 参数 改为 “-r”

coscmd upload -r E:\upload data/upload 

–上传单个文件

coscmd upload E:\upload\exampleobject.txt data/upload/ 

–删除文件

coscmd delete data/upload/exampleobject.txt

–删除文件夹

coscmd delete -r /data/examplefolder/

–显示文件清单

coscmd list examplefolder/

其他操作及详细说明请查看官方文档
https://cloud.tencent.com/document/product/436/10976

另外,有意思的是,腾讯云官方提供了一个UI工具,可以对cos执行可视化操作
https://cloud.tencent.com/document/product/436/11366

三、oss的命令行工具安装及使用

阿里云官方只提供了单文件可执行程序的命令行工具,所以我们需要手动下载,下载页面

https://help.aliyun.com/document_detail/120075.html

下载好后,为方便使用,我们可以把这个文件放到c:\windows\system32下,或者设置环境变量指向文件,当然也可以不用做这一步,在使用时使用该文件的绝对路径也行。

中间的过程就不废话了,和前面差不多,直接贴最终的bat内容

E:\ossutil64\ossutil64.exe config -e oss-cn-beijing.aliyuncs.com -i LTAIbZcdVCmQ**** -k D26oqKBudxDRBg8Wuh2EWDBrM0****  -L CH
E:\ossutil64\ossutil64.exe --recursive cp E:\upload oss://data/upload -u
exit

至于日常运维操作,自己去看官方文档吧,阿里云的这个算是同类服务中功能最多(fuzha)的了

https://help.aliyun.com/document_detail/120050.html

四、其他

下面几个我没用过,但都有命令行工具,使用方式和前面几个差不多,就贴个链接吧

京东云 oss

https://docs.jdcloud.com/cn/object-storage-service/s3cmd

七牛云 Kodo

https://developer.qiniu.com/kodo/1302/qshell

华为云 OBS

https://support.huaweicloud.com/utiltg-obs/obs_11_0001.html

总结

本文档整理的内容适用于无开发人员、硬件环境简陋的场景,无需编写程序,只要写几行简单的脚本,即可实现本地文件自动同步上云。同时,也让初次接触这方面内容的开发者,大致对这些云存储服务有个初步的了解。