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

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 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ChaMd5安全团队

挖洞经验之代理不当日进内网

大家好,我是STCX,应M姐姐之邀写一篇文章为咱们公众号做点贡献,那我就扯一下之前挖一个漏洞的经验。 ---- 正向代理和反向代理是forward/revers...

3096
来自专栏鸡蛋君

[收集]网络上Shdowsocks&ShdowsocksR一键脚本整理

6874
来自专栏java思维导图

【读书笔记】弄懂服务路由与负载均衡,微服务搞起

1 基本概念 SOA 公共的业务被拆分出来,形成可共用的服务,最大程度地保障代码和逻辑的复用,避免重复建设,这种设计称为SOA。 路由 SOA架构中,服务消费者...

3517
来自专栏linux驱动个人学习

Linux内存描述之高端内存--Linux内存管理(五)

过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了...

1041
来自专栏云计算与大数据

架构: UMA vs NUMA

所有处理器共享相同的内存地址空间。这种体系结构主要解决的问题是关于cache一致性。

821
来自专栏逆向技术

脱壳第三讲,UPX压缩壳,以及补充壳知识

           脱壳第三讲,UPX压缩壳,以及补充壳知识 一丶什么是压缩壳.以及壳的原理 在理解什么是压缩壳的时候,我们先了解一下什么是壳 1.什么是壳 ...

2348
来自专栏玄魂工作室

利用Png做持久型XSS攻击

关于文件上传漏洞,其实是老生常谈了,其实很多网站都做了很严格的控制。这里我们不去谈如何突破文件上传,而是假设我们能上传一张图片,然后当成html嵌入或者执行。 ...

1262
来自专栏FreeBuf

某开源博客系统最新版源码审计

近期审计一个JAVA开源博客系统mblog2.5最新版,整体系统还是很安全的,漏洞较少,传统的问题像XSS系统使用全局过滤的方式进行实体化处理,上传问题使用白名...

1075
来自专栏大魏分享(微信公众号:david-share)

咦,如何通过容器同时实现:灰度发布+滚动发布?

(1) 蓝绿部署:不停止老版本,额外搞一套新版本,等测试发现新版本OK后,删除老版本。

4144
来自专栏祥子的故事

Tensorflow | win10中安装tensorflow-0.12.1 (0.12.1以后的版本安装均适用)

5357

扫码关注云+社区