使用命令行工具 OSSUtil 上传阿里云 OSS

换新主题当然要搞点美美的图片支撑啦,在网上搜了一个比较简单的抓取了 700 张二次元图片的 API 源码,随机获取位于新浪图床的二次元图片,就像首页那样。看起来新浪图床的速度好像也就一般,于是暴力把所有图片 URL 写进 acg.txt 里用 wget -i acg.txt 全部下载到本地。结果。。。我对阿里 CDN 还是过度自信了,可能是带宽太小的锅吧,于是想把文件全上传到阿里 OSS 存储试一试,毕竟流量包用不掉也是浪费。

那就上传呗,但是一张一张在阿里 OSS 控制台上传的话实在是太慢了,而且手机流量也用完了,700 张图近 500Mb ,想一想还是找找直接在服务器上传的工具吧。于是搜到了 ossutil 工具。
这是一个阿里云官方开发管理 OSS 的命令行上传工具,尝试了几次没有成功,主要是配置出错了(文档都看不懂,真 TM 是人才啊 ),不多哔哔,登陆服务器登陆服务器之前先在阿里 OSS 控制台开好 OSS :

  1. 新建 OSS Bucket 。注意你选择的地域和下面的 Endpoint ,后面会用到。存储类型建议直接用标准存储,另外两种需要解冻之类的不方便。总之默认的就好。
    新建 Bucket
    新建 Bucket
  2. 新建 RAM 访问控制。在这里打开 RAM 访问控制/人员管理-用户/新建用户 ,访问方式必须勾选 编程访问 ,上面的如果也勾选了的话记得更改 要求重置密码 选项。
    RAM 设置
    RAM 设置
  3. 为新建的存储桶授权 RAM 访问用户。
    授权
    授权

好啦,登陆服务器

// 下载 ossutil 并赋予执行权限
$ wget http://gosspublic.alicdn.com/ossutil/1.6.6/ossutil64
$ chmod 755 ossutil64

// 根据官方文档给的命令开始交互式配置,该命令将创建一个配置文件,在其中存储配置信息
$ ./ossutil config
// 上面这条命令。。。无法运行,用这一条:
$ sudo ./ossutil64 config

请输入配置文件路径(默认为:/root/.ossutilconfig,回车将使用默认路径。如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):/data/wwwroot/alioss/monsterx.conf
对于下述配置,回车将跳过相关配置项的设置,配置项的具体含义,请使用"help config"命令查看。
请输入语言(CH/EN,默认为:EN,该配置项将在此次config命令成功结束后生效):CH
请输入endpoint:http://oss-cn-xxxxxx.aliyuncs.com
请输入accessKeyID:****************
请输入accessKeySecret:********************

注意这里,第一次运行命令是英文的,设置语言为 CH 后再次运行才会是中文啦,这里直接用中文的方便小白看。还有一些说明:

  • 第一行的路径可以随便写,但是需要有写权限,所以在运行命令前用 sudo 赋予管理员权限,文件后缀随意。
  • endpoint 需要根据你的 OSS 存储 Bucket 地域填写,具体可以参考官方说明《访问域名和数据中心》,注意要有 http:// 或者 https:// 开头。一般用外网就可以但是速度较慢,用内网速度更快但是需要 OSS 存储地域与服务器地域相同。
  • accessKeyIDaccessKeySecret 对应填写 RAM 访问控制里面用户的信息即可。
  • 可能还需要填 sts 密钥,直接回车就好。

如果出现这样的报错,请注意你的 OSS 是否授予用户访问权限:

Error: oss: service returned error: StatusCode=403, 
ErrorCode=AccessDenied, 
ErrorMessage="You have no right to access this object because of bucket acl.", 
RequestId=xxxxxxxxxxxxxxxxxxxxx, 
Bucket=xxxxxx, 
Object=XXX/

一切都完成啦,开始命令行上传本地文件到 OSS 存储:

// 上传本地文件到 OSS
$ ./ossutil64 cp [本地路径] [OSS路径]
// 上传本地文件夹到 OSS
$ ./ossutil64 --config-file=[配置文件路径] cp -r [本地路径] [OSS路径]
// 比如我这样用,将本地图片文件夹下所有文件和子目录及其文件上传到 OSS 
$ ./ossutil64 --config-file=/data/wwwroot/alioss/monsterx.conf cp -r /data/wwwroot/monsterx.cn/img/ oss://monsterx/img/

使用 -u 参数可以直接跳过重复的文件哦!emmm...那就这样啦,还有更多命令参考 官方文档 吧,我已经够用了,你呢?

完工!
完工!

猜猜除了 700 张二次元图我还有什么东西呀

添加新评论

已有 4 条评论

我猜还有打架的图片 |´・ω・) ノ

MonsterX MonsterX 回复 @mineolym

୧(๑•̀⌄•́๑)૭ 这不是去幼儿园的车

换模板了呢

MonsterX MonsterX 回复 @Nroy

是呀 我寻思一直 MD 风会不会审美疲劳…