这几天看到OSS上的流量有那么一点点鲸人(真的) 然后就想要压缩OSS上所有的图片。当然了我其实也是可以用OSS的图片处理API的,但是!我懒得一个个改掉链接了。
想要压缩图片,首先就要有图片呢(不然压缩空气?)如果说你要一个一个点OSS控制台上的「下载」的话 我也拦不住你(巨大的滑稽)所以我们就要先有所有的URL。

Tip:其实可以直接用SDK下载文件,但是同地域、VPC的机子通过专有域名,是不要付公网流出费用的。所以要这么做。

需要的环境

1.一台装有Python的Linux机子(当然Windows也是可以的,但是这篇博客照着Linux来)
2.阿里云Access TokenBucket 名称/地域信息
3.同地域/VPC的阿里云机子(可选)
4.手和脑子(可选)

Step.1 安装环境

安装Python的过程我就不多说了,一般Linux的机子都会自带Python2.7
先安装Aliyun Oss官方SDK
输入以下指令:

pip install oss2

装好那就完事了

Step.2 使用官方SDK获取文件目录

具体可以查看阿里云官方文档。

我们新建一个Python文件。

touch listossfile.py
vi listossfile.py

然后敲入以下内容

# -*- coding: utf-8 -*-
import oss2
#引入官方SDK
from itertools import islice
auth = oss2.Auth('AliyunAccessKey','Token')
#上面输入AccessKey和Token。
bucket = oss2.Bucket(auth, 'http://oss-cn-shanghai.aliyuncs.com', 'Bucket')
#上面分别输入地域的域名、Bucket名
for b in islice(oss2.ObjectIterator(bucket), 100000):
#这边控制输出多少个文件,如果不需要
    print(b.key)

配置完成之后,我们就可以列出文件了。
执行这个Python文件。

python listossfile.py

可以看到输出了根目录下所有的文件。
例如

img/1.jpg
img/I_Need_More_Visiters.jpg
...
oss-accesslog/....log

这时候我们就用Grep筛选出img/下的文件。

python listossfile.py | grep img/ > files.txt

vim里去掉头部的img/就可以油炸了吃掉了

Step.3 生成URL

这里我们就要用到万能的VIM了。
当然其实sed命令也具有相同的效果

Tip of Step.3

Vim中批量在每行前面加东西的指令:

:% s/^/Text/g

Vim批量删除前面东西的指令

:% s/^/Text//g

vi打开files.txt,然后输入

:% s/^/https\/\/\:tc-pic.oss-cn-shanghai-internal.aliyuncs.com\//g
//Vim中指令分隔符是/,所以需要\来反义。

Tip 我这里事替换到了同地域域名,这样不需要流量。

然后就完事了鸭!来看看你船新的孩子把

https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe91.jpg
https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe92.jpg
https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe93.jpg
https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe94.jpg
https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe95.jpg
https://tc-pic.oss-cn-shanghai-internal.aliyuncs.com/img/moe96.jpg
...

Step.4 下载文件

Step 4.1 安装Wget

由于我阿里云同地域的机子用的是Windows,命令行上没啥好用的工具。
所以我们先下载Wget(Windows)

(广告?)TurboCloud船新上线!无数不多的资源等着你探索233
然后放到系统变量目录下,栗如
C:Windows
然后Wget他就装好了

Step 4.2 批量下载

用Vim在刚刚的文件前面加上wget
然后放到阿里云的机子上。
新建一个目录,然后在里面新建一个批处理,内容就是刚刚生成的内容。

打开OSS 允许空Referer(防盗链关闭)(可选)

然后打开批处理,下载把!

Last modification:October 20th, 2019 at 05:41 pm
如果我的文章对你有帮助,请赞助我吧~