智能云上手指南:如何将历史数据迁移到万象优图

6 月 21 日,腾讯云在 2017「云+未来」峰会上推出了战略新品——智能云,宣布将腾讯积累近 20 年的 AI 能力向政府、企业和开发者开放,其中首批开放计算机视觉、智能语音识别、自然语言处理的三大核心能力。腾讯云技术社区陆续推出了系列文章,向普通开发者分享如何快速接入并使用这三大 AI 能力,节省自身的开发成本,同时极大提升开发效率和用户体验。

本文将为广大云开发者介绍如何将历史数据迁移到腾讯云万象优图

1 历史数据迁移

在使用万象优图以前,您的图片数据可能存在服务器本地文件系统、分布式文件系统以及其他云存储等,我们提供迁移工具,方便您将这些历史图片迁移到万象,目前支持3种存储方式的迁移:

  1. 图片在服务器本地存储,直接将某目录下的所有文件上传到万象优图。
  2. 指定URL列表文件,文件中每一行是一张图片的URL。工具会下载列表文件中的每一张图片并上传到万象优图。
  3. 指定七牛云存储的账号和空间名,迁移该指定空间中的所有文件或部分文件到万象优图。

本工具目前支持类Unix操作系统。推荐在Linux或Mac OS X下使用Python 2.7运行。

1.1 迁移工具下载地址

https://github.com/tencentyun/Cloud-Image-Migration-Tool

1.2 迁移工具安装使用方法

从github上通过git获取,或者下载压缩包解压到linux服务器上,然后进入工具目录

cd Cloud-Image-Migration-Tool/bin

1.2.1 启动迁移

运行start.sh脚本,工具会按照配置文件中的配置开始运行.启动前请修改配置,否则会运行失败。如果要迁移的文件较多,可后台运行,运行命令:

./start.sh &

上传完成后再次运行start.sh会重试失败的任务。

start.sh脚本首先扫描待上传的任务提交到任务列表,然后开始上传。如果第一个过程被打断,下次运行start.sh会重新扫描待上传的任务;如果第二个过程被打断,下次运行start.sh会继续上传。如果需要强制刷新任务列表请运行以下命令:

./start.sh -f &

1.2.2 查看迁移进度

启动后可查看迁移状态,运行stat.sh脚本,会在屏幕上持续输出迁移状态,按Ctrl+c退出查看。

./stat.sh

该脚本输出内容如下图:

数字有三列,第一列:失败的文件数;第二列:成功迁移的文件数;第三列:要迁移的文件总数

1.2.3 停止迁移

若启动后想做配置调整或任何异常发生,可停止迁移,运行stop.sh。

./stop.sh

在迁移过程中运行stop.sh脚本停止迁移,这一过程可能需要等待几秒钟的时间以保证已经开始的任务正常结束并写入日志。如果需要强制停止,运行stop.sh -f。

停止迁移之后如果没有清空日志并且没有修改配置信息,再次启动迁移会继续上次的迁移任务,重试所有失败记录但已经迁移成功的文件不会重传。

1.2.4 获取失败信息

获取迁移失败的文件列表及信息,运行view_failed.sh。

./view_failed.sh

1.2.5 清除日志

若想开始一次新迁移,可清空之前的日志信息,运行clean.sh。请慎用,因为日志文件会作为增量断点续传的参考信息,删除后再执行相同任务所有文件会重新上传。

1.3 修改配置

配置文件为config.ini位于conf目录, 配置文件中section name和option name不区分大小写。

vi Cloud-Image-Migration-Tool/conf/config.ini

1.3.1 迁移类型设置

设置migrate.type 为

Local 表示迁移linux本地文件系统的文件 URLList 表示迁移url列表文件中所有url指向的文件 Qiniu 表示迁移七牛某空间的文件

[MigrateInfo]
migrate.type = Local

1.3.1.1 本地文件系统

若迁移类型为Local,则需要配置上传的本地根目录位置,必须为绝对路径。上传后的file id不包含根目录。例如:

[Local]
local.image_root_path = /root/data/images/

迁移后图片的访问路径:

http: //上传的万象空间域名/图片相对于所配置的根目录的相对路径

比如,设置的本地目录:/data/web/images 有一张图片路径为:/data/web/images/2015/07/17/abc.jpg,上传后访问路径:http: //上传的万象空间域名/2015/07/17/abc.jpg

1.3.2 URL列表文件

若迁移类型为URLList,则需要配置URL列表文件的位置,必须为绝对路径。例如:

[URLList]
url.url_list_file_path = /data/url_list

迁移后图片的访问路径:

http: //上传的万象空间域名/原url的url路径

比如,原url为http: //www .xxx.yyy .com/2015/07/17/abc.jpg,上传后访问路径:http: //上传的万象空间域名/2015/07/17/abc.jpg

注意:若原url中有参数,上传后的文件名是去掉参数后的,比如,原url为http:// www .xxx. yyy. com/2015/07/17/abc.jpg?width=1024&height=1024,上传后访问路径:http: //上传的万象空间域名/2015/07/17/abc.jpg

1.3.3 七牛

若迁移类型为Qiniu,则需要配置七牛云存储账号相关信息。

qiniu.bucket填写被迁移的空间名;qiniu.domain为七牛域名,需要包含协议类型(如http:// ); 若只迁移一部分则需要提供qiniu.start_offset和qiniu.total_num,qiniu.start_offset从0计;若空间开启了防盗链,需要在qiniu.referer中指定访问来源域名,同样需要包含协议类型(如http:// ); 如果是私有空间,将qiniu.isprivate设置为True,否则设置为False。

[Qiniu]
[Qiniu]
qiniu.bucket = my_bucket_name
qiniu.AccessKey = _17terLxP-ZK7tma9jXgm7MuEOk72yP9OZBIP35G
qiniu.SecretKey = PFw6JivhTAdNKRojaguUkC6tlFHAI9SBrjVYdfya
qiniu.domain = http://abcde.com1.fg.glb.clouddn.com/
qiniu.referer = 
qiniu.isprivate = False

迁移后图片的访问路径:

http: //上传的万象空间域名/原七牛key

比如,原图片下载路径为http:// 7x3m4e .com 1.z0.glb.clouddn.com /2015/07/17/abc.jpg, 上传后访问路径:http: //上传的万象空间域名/2015/07/17/abc.jpg

1.3.4 万象优图账号信息

从万象优图图片空间中查看项目ID和空间名称,分别填写到appinfo.appid和appinfo.bucket;

从万象优图项目设置中查看Secret ID和Secret Key分别填写到appinfo.secretID和appinfo.secretKey。

[AppInfo]
appinfo.appid = 
appinfo.secretID = 
appinfo.secretKey = 
appinfo.bucket =

1.3.5 上传设置

Concurrency控制同时运行的上传进程数目,请根据上行带宽和机器配置适当调整该数值。必须提供一个大于0的整数。

db.commit.interval控制上传结果写回日志的时间间隔,单位为秒,应该提供一个合法的正整数或浮点数或正无穷(inf)。如果进程意外结束,未写回的日志将丢失。此值设置过小将严重影响性能,一般情况下使用默认值即可。

jobqueue.capacity、jobqueue.reload.threshold、buffer.size是控制任务队列和内存缓冲区的选项,一般情况下使用默认值即可。

[ToolConfig]
concurrency = 10
jobqueue.capacity = 2000
jobqueue.reload.threshold = 0.4
buffer.size = 100000
db.commit.interval = 3

fileid.ignore.if使工具在提交任务时忽略file id符合指定条件的任务。

fileid.ignore.unless使工具在提交任务时忽略file id不符合指定条件的任务。

error.ignore.if使工具在重试出错任务时忽略错误日志符合指定条件的任务。

以上三个选项若启用则应提供一个正则表达式,否则留空,语法参考Python re Module Reference。如果同时提供了fileid.ignore.if和fileid.ignore.unless,并且某个file id同时符合两个正则表达式,那么它会被忽略。

如忽略OS X操作系统下的.DS_Store文件,不重试错误码为-1886的任务:

[Advanced]
fileid.ignore.if = .*.DS_Store
fileid.ignore.unless = 
error.ignore.if = .*code: -1886.*

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

Ansible 企业高可用负载均衡部署方案

1583
来自专栏北京马哥教育

马哥金牌分享 | 十五分钟实现Ansible常用模块入门

本文是马哥教育特约金牌讲师、Linux运维专家魏巍的分享《Anisble常用模块入门指南》的文字整理篇。 朋友们晚上好: 今天我为大家带来的分享是 Ansibl...

3495
来自专栏北京马哥教育

5 分钟上手 Tmux

如果你在做的项目需要你打开多个终端,那 Tmux(还有它的好基友 Tmuxinator)将会大大提高你的效率!Tmux 允许你在一个终端运行多个会话,Tmuxi...

3455
来自专栏张戈的专栏

WordPress启用memcached动态缓存以及报错解决

张戈博客目前用的是Nginx 的 fastcgi 缓存方案,属于纯净态缓存模式,所以前台登录态什么的基本都没了。如果要兼顾前台登录态,又想速度快,有没有解决方案...

4069
来自专栏区块链入门

第4课 如何在UBUNTU虚拟机上编译EOS完成环境搭建?

【本文目标】 通过本文实践,能在WINDOWS操作系统搭建UBUNTU 18.04 LTS环境,并在此环境编译成功EOS v1.0.5正式发布版本。 【前置...

1135
来自专栏安恒网络空间安全讲武堂

python之paramiko模块

754
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

前言   前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识!   主要是些基础的东西...   如何去创建...

2297
来自专栏小樱的经验随笔

记一次用WPScan辅助渗透WordPress站点

WPScan 是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web 开发人员扫描 WordPress 漏洞并在他们开发前找到并解决问题。我们...

863
来自专栏无所事事者爱嘲笑

vue-cli webpack2项目打包优化

1724
来自专栏草根专栏

使用Identity Server 4建立Authorization Server (3)

上一部分简单的弄了个web api 并通过Client_Credentials和ResourceOwnerPassword两种方式获取token然后进行api请...

2956

扫码关注云+社区