图床从七牛迁移至腾讯COS

前言(吐槽):

之前收到邮件,七牛要回收什么测试域名,想着没啥影响。因为我绑定了备案域名。最近突然发现博客好多图片挂了。一看我备案了快五年的域名被取消备案了???而且七牛直接把测试域名删了…

我当初注册的就是个人性质博客类网站,五年时间网站一直正常运行,且内容性质从未改变。空壳网站?备案信息不准确?真是睿智 🖕

概览

以下操作在 macOS 下进行。所有命令的文档请参考qshell 命令列表

主要流程: 下载七牛中的所有资源,上传至腾讯 COS。由于七牛的测试域名已失效,原空间的资源无法直接下载,所以先新建一个空间(新空间测试域名 30 天有效期),将旧空间的资源全部转移至新空间,然后从新空间下载所有资源。

一、七牛资源从就空间转移至新空间

1、下载七牛的命令行工具qshell

2、解压、重命名、赋予 qshell 运行权限

前往目录

1
cd  /Users/ludis/Downloads/qshell-v2.3.4 && ll
1
2
3
4
5
6
7
8
➜  qshell-v2.3.4 ll
total 135824
-rwxr-xr-x@ 1 ludis staff 14M Dec 4 16:19 qshell_darwin_x64
-rwxr-xr-x@ 1 ludis staff 14M Dec 4 16:19 qshell_linux_x64
-rwxr-xr-x@ 1 ludis staff 12M Dec 4 16:19 qshell_linux_x86
-rwxr-xr-x@ 1 ludis staff 14M Dec 4 16:19 qshell_windows_x64.exe
-rwxr-xr-x@ 1 ludis staff 12M Dec 4 16:19 qshell_windows_x86.exe
➜ qshell-v2.3.4

重命名(可选)

1
mv qshell_darwin_x64 qshell

设置权限

1
chmod +x qshell

3、添加七牛账号

前往七牛 -> 个人中心 -> 密钥管理。查看 AK、SK。

./qshell account [AK] [SK] [账户名(邮箱即可)]

4、导出已过期的 bucket 空间所有文件信息。

qshell listbucket A -o A.list.txt (A 为空间名)

5、新建一个空间 B,用于将已过期的 A 空间中的所有文件,转移至新的空间 B。(新空间的域名 30 天有效)注意 A、B 空间需要在相同的地区才可以。

6、使用awk工具,将 A 空间的文件列表进行格式化。Mac 下自带awk工具,其余平台自行安装。

此时 A.list.txt 中的内容格式如下:

1
2
3
4
5
6
...
images/react.png 340793 FoVpVxc12JXJawT0UdkRs7bHm3MS 15192693058673770 image/png 0
images/watermark.png 11567 FirWtot1NJVL-0bU-9VoN4yeQyLu 15192728052402421 image/png 0
postbg.jpg 105210 FlBqtLeiA1kTiQxRUSSapLep1utC 15185150032696840 image/jpeg 0
postcover.jpg 47446 Fltqi_cmpz09x8PV4y1yGYwqW_lr 15185152316033806 image/jpeg 0
...

使用awk命令格式化

1
2
touch list.txt
awk '{print $1}' A.list.txt > list.txt

这个命令意思是将A.list.txt文件中每行的第一个字段(文件名)分离出来,输出到list.txt文件中。

对应的list.txt格式如下:

1
2
3
4
5
6
7
...
images/postbg.jpg
images/react.png
images/watermark.png
postbg.jpg 105210
postcover.jpg
...

7、使用命令将 A 空间中的所有资源批量转移至新空间 B 中:

1
2
➜  qshell-v2.3.4 ./qshell batchcopy A B -i list.txt
<DANGER> Input hejhbd to confirm operation: hejhbd

根据提示输入字符串即可,次数刷新 B 空间即可看到,所有 A 空间的内容已经转移到 B 空间。

二、从七牛批量下载资源

1、创建下载用的配置文件batch_download.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
// dest_dir 文件储存路径-全路径
"dest_dir" : "/Users/ludis/Downloads/qshell-v2.3.4/downloads/B",
// 新建的空间名-B
"bucket" : "B",
"prefix" : "",
"suffixes" : "",
// B空间的测试域名
"cdn_domain" : "http://pji27eyb0.bkt.clouddn.com",
"referer" : "",
"log_file" : "download.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false
}

2、下载文件

执行./qshell qdownload -c 10 batch_download.conf。其中-c 10表示可以同时下载 10 个文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
➜  qshell-v2.3.4 ./qshell qdownload -c 10 batch_download.conf
Writing download log to file download.log

Downloading 2018-09-26-a0KAWoB.jpg [1/76, 1.3%] ...
Downloading 2018-10-14-15382027090950.jpg [2/76, 2.6%] ...
Downloading 2018-10-14-15394888949656.jpg [3/76, 3.9%] ...
Downloading 2018-10-14-15394889958531.jpg [4/76, 5.3%] ...
Downloading 2018-10-14-15394901705197.jpg [5/76, 6.6%] ...
...
Downloading postbg.jpg [75/76, 98.7%] ...
Downloading postcover.jpg [76/76, 100.0%] ...

See download log at path download.log
➜ qshell-v2.3.4

三、上传文件至腾讯 COS

此处省略 100 字,自行注册腾讯云,创建存储空间。设置空间权限为“公有读私有写”

上传资源可以使用网页端或者下载工具

四、旧资源链接替换/重定向

将资源上传至腾讯 COS 后,需要将原博客中失效的七牛链接替换为腾讯 COS 中的链接。不同系统的博客请自行传泽替换方案。替换.md 文件中的域名,或从数据库查询替换…

五、图片处理(水印)

七牛空间存储的图片,可以创建图片处理规则,添加水印、缩放等比较方便。然而在腾讯 COS 存储中没有找到相关配置项。

搜索发现,腾讯的图片处理,统一使用“数据万象”这个单独的应用。在 COS 创建完存储空间;然后在“数据万象”创建自定义的图片处理规则,并绑定 COS 存储空间的 Bucket 即可。且有个优点是可以使用别名代替处理规则,以及可以使用-(中划线) _(下划线) /(斜杠) !(感叹号)四中分割符号。

例如:

  • 图片链接: https://233.com/666.png

  • 如创建的图片规则为: imageMogr2/interlace/0|watermark/1/image/aHR0cDovL3dhdGVybWFyay1iai0xMjUyMTA2MjExLnBpY2JqLm15cWNsb3VkLmNvbS9sdWRpcy0...

  • 别名为: imgRule

以七牛的尿性图片添加完规则变成: https://233.com/666.png?imageMogr2/interlace/0|watermark/1/image/aHR0cDovL3dhdGVybWFyay1iai0xMjUyMTA2MjExLnBpY2JqLm15cWNsb3VkLmNvbS9sdWRpcy0... 👎

腾讯云则很优雅: https://233.com/666.png!imgRule 👏

参考

Author

Ludis

Posted on

2018-12-13

Updated on

2019-01-14

Licensed under

Comments