腾讯云对象存储数据迁移工具

腾讯云对象存储数据迁移工具支持从AWSS3、阿里云、腾讯云、百度云、七牛云等服务迁移文件到腾讯云腾讯云对象存储;同时也支持本地文件列表迁移。迁移工具是一个简单的分布式系统,采用pythonrpc实现,拥有一个Master,一个或多个Worker,你可以将其运行在单台或多台机器上。
腾讯云对象存储开通地址 https://cloud.tencent.com/product/cos
腾讯云对象存储官方帮助文档 https://cloud.tencent.com/product/cos/getting-started

工具特点如下:

1.支持丰富的数据源,包括本地数据及第三方数据

2.支持断点续传

3.支持增量迁移,且支持迁移指定时间后的文件

4.支持并行数据传输

工具下载:osstransfer

运行环境

Linux及Window

软件依赖:python版本2.7.X

迁移工具是使用python实现的,在使用前,需要安装一些依赖包,你可以使用下面的命令进行安装(确保pip已经安装了)

pipinstallrequestspipinstallqiniupipinstallboto3pipinstall-Ucos-python-sdk-v5pipinstalloss2

配置Worker

Worker配置文件是config-worker(路径:osstransfer/src/worker/config-worker)

配置内容如下

#port:指定该worker使用的端口号,默认值是6262;#is-continue:True/False,是否继续上次未完成的任务,默认只为True。port=1234is-continue=True配置完成后直接运行osstransfer/src/worker目录下的worker.py,建议你在后台运行worker,启动Worker命令如下:nohuppythonworker.pyworker启动后,它在等待master的调用,有关worker的运行记录,你可以在log-worker.txt文件(目录:osstransfer/logs)中查看。

注意:worker目前只支持被一个master调用,请确保你的worker不会同时为多个master服务。

配置Master

Master的配置文件是config-master(路径osstransfer/src/master/config-master)

配置参数如下

配置项说明master指定master所在机器的ip以及使用的port;必配项worker指定可用的worker,你需要指定该worker的ip以及你为该worker配置的port;必配项Job-ID为这次任务指定一个名字,如果你自己指定的话,需要保证同一个bucket下的job-ID是不同的;你也可以不指定,会使用时间戳作为job-ID;选配项Job-typejob的类型只有两种,transfer(迁移job)、check(验证job);必配项src-filetype指定源数据的文件类型,可选的有,s3file、diskfile、qiniufile、aliyunfile、notencentfile、baidufile;必配项src-absolutepath仅当配置filetype为diskfile时使用,用来指定源数据的绝对路径(路径必须以'/'结尾),该路径下的所有文件都会被迁移;必配项src-accesskey指定源数据的accesskey;迁移第三方数据源必配src-secretkey指定源数据的secretkey;迁移第三方数据源必配src-endpoint指定源数据的endpoint;迁移第三方数据源必配src-bucketName指定源数据所在的bucket;迁移第三方数据源必配src-key指定迁移的目录(必须以'/'结尾),如果你不指定,将会把bucket下的数据全部迁移;选配项src-file-list你可以指定一个文件,把需要迁移或验证的文件列表保存在该文件中,文件格式如下:filepath filesize;选配项
注意:如果指定了src-file-list,只会迁移你在该文件中指定的文件列表,src-key配置项将失效(对于文件系统,你可以使用src-key指定前缀,在文件列表中保存相对路径)des-accesskey腾讯云对象存储的accesskey;必配项des-secretkey腾讯云对象存储的secretkey;必配项des-endpoint腾讯云对象存储的endpoint;必配项des-bucketName腾讯云对象存储的bucket名;必配项des-key腾讯云对象存储的目录,你可以通过指定目录(目录必须以'/'结尾),把数据迁移到该目录下;选配项sync-enable-increment是否开启增量同步,可选的参数有True(开启增量同步)、False(全量同步);选配项,未配时默认为增量同步,当为False时,transfer-is-continue和check-is-continue无论如何配置,均为False
注:当你设置为True时,你必须为job-ID指定一个值,不可以为空。sync-lastmodify设定一个时间,只会迁移最后更改时间在该时间之后的文件,时间格式为:YYYY-MM-DDHH:MM:SS,默认值为1970-01-0100:00:00;选配项
注:虽然你设置了lastmodify,但可能会迁移该lastmodify之前的一些文件,也就是说该时间只是一个大概值,并不是十分精确。task-size指定每个task迁移数据的最大值(以MB为单位),默认5GB,在验证时也会使用;选配项task-filenumbers指定每个task迁移文件数量的最大值,默认5w(建议不要超过20w),在验证时也会使用;选配项round指定轮数,默认2轮,在验证时也会使用该轮数;选配项transfer-is-continueTrue/False,是否继续上次未完成的job,默认为True;选配项transfer-error-output指定一个文件名,用来保存迁移失败的文件(你可以通过该文件查看失败原因),默认文件名是:"[job-ID]-transfer-error-list.txt";选配项check-time指定验证的时间,可选的参数有now(迁移完成后立即校验)、future(迁移完成后先不校验,会在目的bucket中保存校验所需要的信息)、never(不校验),默认值是future;选配项check-mode指定验证模式,可选的有head(只查看该文件是在存在)、md5(比较源数据和目的数据的md5),默认值为head;选配项check-is-continue是否从上次继续验证,True/False,默认为True;选配项check-error-output指定一个文件名,用来保存验证存在问题的文件,默认文件名是:"[job-ID]-check-error-list.txt";选配项check-md5-output验证完成后,会保存所有文件的md5,请指定一个文件来保存它,默认文件名是:"[job-ID]-check-md5-list.txt";选配项运行Master

config-master文件为master指定了一个job,master在运行时会读取这个文件,完成指定的任务。

使用场景:

(1)冷数据迁移

当你配置好config-master后,直接运行osstransfer/src/master目录下的master.py,建议你在后台运行:

nohuppythonmaster.py(2)热数据迁移

如果你准备迁移热数据,建议你使用定时任务,在linux下你可以使用crontab去设置一个定时任务,在windows下有图形界面的计划任务。

linux下使用crobtab如下:

命令crontab-e,然后添加定时任务,每隔一天执行一次:

 

注意:如果上一个定时任务没有完成,新的迁移任务是不会启动的,这样做是为了保证迁移过程中数据一致。

master的运行信息可以通过osstransfer/logs目录下的log-master.txt查看。

监控状态

为了能够获取master和worker的运行状态,开发了一个单独的程序,该程序目录为:osstransfer/src/probe/probe.py,介绍该程序的使用:

(1)显示帮助文档

pythonprobe.py-h

(2)查看某个worker或master

pythonprobe.py-ip_portip:port

(3)查看所有的worker和master的状态

pythonprobe.py-fconfig-master

标签