KS3-import数据迁移工具

最近更新时间:2021-06-29 17:28:03

查看PDF
版本号 修改内容 时间
KS3-import-tool-2.1.5-dist
  • 增加日志分级功能 有off,low,mid,high,all五个级别,默认为low。
  • 2021年5月14日
    KS3-import-tool-2.1.4-dist
  • 增加结束重试功能、支持配置次数 默认三次
  • 增加重试命令RETRY
  • 优化文件本地head,是否优先使用本地DB判断文件是否已经上传过,默认为开启,设置成false将不是用本地DB做判断直接拉取目标桶判断是否需要上传
  • 2021年5月6日

    主要特性

    • 支持将本地目录内文件、url列表文件或公有云文件同步到指定KS3 Bucket上,目前支持将金山云KS3、阿里云OSS、腾讯云COS、百度云、七牛云、Azure和 AWS S3 设置为迁移源
    • 支持增量上传:a. 不在成功列表中;b. 在成功列表中,但最后更新时间不同
    • 支持大文件断点续传
    • 支持流量控制
    • 并发上传
    • 迁移进度查询
    • 海量文件迁移,部分失败情况,重新全量上传即可,已经成功上传的文件会自动跳过(勿删除log)
    • 支持选择存储类型,标准或低频

    运行环境


    用户系统需要具备jdk 1.8 环境,建议使用Oracle版本JDK。

    Windows安装jdk:

    方法参考:https://docs.ksyun.com/documents/5796

    安装完成后,在命令提示符下,执行java -version,来确认是否安装成功

    如下所示,即安装成功

    Linux安装jdk:

    方法参考:https://docs.ksyun.com/documents/5797

    安装完成后,在终端下执行java -version,来确认是否安装成功

    如下所示,即安装成功

    使用方式


    假设work_dir=/your_dir/ 配置文件中请填写绝对路径

    1. 解压文件

    unzip KS3-import-XXXXXXXX.zip -d ${work_dir}

    2. 填写配置文件xxx.conf

    2.1 字段说明

    根据${work_dir}下解压后的sample.conf,创建用户自己新的任务配置文件xxx.conf
    所有的配置参数项前后都不允许有空格。
    配置文件中,字段具体含义如下。

    字段 说明 是否必填
    taskName 迁移任务名称
    threadsNum 并发上传的线程数
    (1) 配置的数目不能<=0
    (2) 根据实际情况填写,更大的值可能会需要更大的运行内存,并且需要调整java运行的参数
    srcType 同步源类型,不能为空
    (1) 目前只支持选项:local/url/ks3/oss/cos/bos/qiniu/aws/upyun/azure
    srcAccessKey 数据源的AccessKey
    (1) 如果srcType是local或url,则忽略此选项
    srcSecretKey 数据源的SecretKey
    (1) 如果srcType是local或url,则忽略此选项
    srcDomain 数据源bucket所在区域对应域名,不同区域对应的域名不同。
    (1) 请参照https://docs.ksyun.com/documents/6761
    (2) 如果srcType是local,则忽略此选项
    srcBucket 源bucket
    (1) 如果srcType是local,则忽略此选项
    (多桶迁移模式可不填写,填写则提示警告并忽略)
    srcPrefix 源前缀, 匹配原前缀的文件会被迁移
    (1) 如果srcType=local,则填写本地待同步目录或文件,请注意您需要填写完整的目录或文件路径(linux下路径分隔符为“/”, win下路径分隔符为“/”或“\\”),路径不能有中文字符
    (2) 如果srcPrefix指定的是一个文件,则上传后的objectKey是dstPrefix + “/” + absoluteFileName
    (3) 如果srcType=url,则填写url列表的绝对路径,url列表应当为一个文本文件,并逐行列出需要上传的url地址(支持http和https协议)
    (4) 如果srcType=其他云厂商,会迁移srcBucket/srcPrefix/下的文件。若srcPrefix为空则迁移所有文件
    dstAccessKey KS3 AccessKey
    dstSecretKey KS3 SecretKey
    dstDomain bucket所在区域对应域名,不同区域对应的域名不同。
    (1) 请参照https://docs.ksyun.com/documents/6761
    dstBucket KS3 bucket名称 (多桶迁移COPY类型可不填写,若填写则进行忽略)
    dstPrefix 上传到KS3上时需要添加的前缀名(目录),当数据源是某个本地目录或公有云目录时,此处须填写与“srcPrefix”完全相同的目录名称,以确保迁移前后文件目录结构不变
    maxNetThroughput 单位为KB/s,<=0 表示不设限。例:如果限速为10Mb/s,则对应的以MB为单位的限速是10*0.128MB/s=1.28MB/s,对应的maxNetThroughput=1280KB/s
    cannedAcl 文件权限配置
    (1)可选项private/publicread
    (2) private私密
    (3)publicread公开
    storageType 选择上传文件存储类型
    (1)可选项STANDARD/STANDARD_IA
    (2) STANDARD标准
    (3)STANDARD_IA低频
    filterEnable 过滤器开关 true-打开 false-关闭;过滤器可根据文件名和文件修改时间过滤文件
    urlRangeDownload url文件是否使用range下载 true-打开 false-关闭
    fileNameInclude 文件名称白名单,多个用英文逗号分隔
    "filterEnable=true"时配置有效
    fileNameExclude 文件名称黑名单,多个用英文逗号分隔,可用于过滤前缀相同的文件
    "filterEnable=true"时配置有效
    modifyTimeRange 文件修改时间范围,以#分割,时间格式为yyyy-MM-dd HH:mm:ss,如2005-01-12 00:00:00#2016-01-12 00:00:00
    1、不限制开始时间#2016-01-12 00:00:00
    2、不限制结束时间2005-01-12 00:00:00#
    3、"filterEnable=true"时配置有效
    singleFileSize 分块上传文件大小阈值,大于该值使用分块上传 ,单位为Byte
    partSize 分块上传块大小 ,单位为Byte
    uploadPartPoolSize 单文件分块传输并发数
    maxNetThroughputRange 使用分时限流的流量配置,单位为KB/s,<=0 表示不设限,不在区间可以设置不同的流量如maxNetThroughputRange= 1000#2000#3000;限流区间要与限流时间段一一对应,否则设置无效;执行限速优先级:分时限速>maxNetThroughput>不限速
    maxNetThroughputTimeRange 执行分时限流的时间段,可设置多个限流时段,如maxNetThroughputTimeRange= 11:50:00-15:48:50#15:49:00-15:49:50#15:50:00-15:51:50;限流区间要与限流时间段一一对应,否则设置无效;当时间段有重叠时以第一个时间段的限速为准
    incrementalMode 增量模式下的同步;incrementalMode=true时开启增量模式(URL类型不支持增量模式),false为关闭,默认为false;如果设为true,会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据迁移到KS3
    incrementalModeInterval 开启增量时会每间隔incrementalModeInterval(单位秒)重新扫描一次增量数据,并将增量数据迁移到KS3;注意:可配置的最小间隔为900秒,不建议配置成大于3600秒的值,会浪费大量请求,造成额外的系统开销
    useSrcAcl 是否使用数据源文件Acl类型,值:true|false
    默认为false。配置为true,会将源KS3对象的ACL复制到目标对象上,且cannedAcl选项将会被忽略。(目前qiniu,aws类型的迁移暂不支持,使用默认的private类型存储,其余追随源对象Acl类型)
    incrementalModeCount 增量迁移若干次数后结束迁移任务,取值范围为1-30,默认为1
    useHttps 是否开启HTTPS传输,true为开启 false为关闭,默认值为false
    skipDstExistFile 含义:数据迁移时是否跳过目标桶已经存在的文件,为int类型。
    0- 最后修改时间:首先判断lastModified,源文件小则跳过;源文件大则覆盖重传;相等则判断文件Size,存在不一致则重传覆盖
    1-条件覆盖:lastModified,Size ,Type有一个不相等则会覆盖重传
    2-全覆盖:已存在文件不做处理 全部覆盖重传
    3-不覆盖:全部跳过已存在文件
    conciseModel 控制台打印输出模式 简洁模式true 详细模式false(不影响log)
    useMultiBucketMode 是否开启多桶迁移模式:填写值:true|false。目前仅仅支持Azure迁移类型
    multiMode 设置多桶迁移模式: 填写值:LEVEL、COPY,分别对应两种多桶迁移类型。
    COPY: 复制源桶名称和文件到目标region,目标region没有同名桶则新建桶,有同名桶则直接上传文件。
    LEVEL: 在dstBucket桶中,根据源桶名创建对应文件夹(前缀), 文件夹名为源桶名。
    目前仅仅支持Azure迁移类型
    multiInclude 在多桶迁移模式下,桶名过滤白名单 (若过滤多项桶则使用逗号分割)。目前仅仅支持Azure迁移类型
    multiExclude 在多桶迁移模式下,桶名过滤黑名单(若过滤多项桶则使用逗号分割)。目前仅仅支持Azure迁移类型
    retryCount 结束时的重试次数,默认为三次
    useLocalDBCheck 是否优先使用本地DB判断文件是否已经上传过,默认为true,设置成false将不是用本地DB做判断直接拉取目标桶判断是否需要上传
    logLevel 表示日志的分级,取值off、low、mid、high、all。默认为low

    2.2 配置文件示例

    迁移类型 配置文件 说明
    从本地迁移到KS3 local.conf 适合从自建IDC迁移。
    本地迁移时不需要填写srcAccessKey,srcSecretKey, srcDomain, srcBucket。
    srcPrefix填写文件绝对路径。
    从url迁移到KS3 url.conf 当客户为CDN客户,且数据量级较大的情况下,可以使用url方式进行迁移。
    不需要填写srcAccessKey,srcSecretKey, srcDomain, srcBucket。
    srcPrefix填写列表文件绝对路径,该txt文件包含所有要上传的url,每个url占据新的一行。
    从百度云迁移到KS3 bos.conf srcDomain为去除桶名后的官方域名。例如:
    官方域名为: mybucket.bj.bcebos.com,
    srcDomain应填写: bj.bcebos.com
    从腾讯云迁移到KS3 cos.conf 1. srcAccessKey内填写cos用户的SecretId
    2. srcDomain填写所属区域英文名称,如 ap-nanjing
    3. 桶名须保持完整,携带后方编号,如mybucet-00001
    从七牛云迁移到KS3 qiniu.conf srcDomain填写目标桶的外链域名
    从KS3迁移到KS3 ks3.conf
    从阿里云迁移到KS3 oss.conf
    从AWS S3迁移到KS3 aws.conf

    3.上传示例

    3.1 从本地上传

    1)准备迁移数据

    下面示例中, 准备迁移D:\example\local\ 目录下的六个文件
    image.png

    2)填写配置文件

    请设置secType=local

    srcAccessKey,srcSecretKey,srcDomain,srcBucket为空即可,如果不为空则会被忽略

    请设置srcPrefix的值为目标文件的绝对路径并以/或\结尾

    srcType=local
    srcAccessKey=
    srcSecretKey=
    srcDomain=
    srcBucket=
    srcPrefix=D:/localpath/
    

    参考配置文件:local.conf

    3)打开命令行

    • Windows下:快捷键Windows+R>在弹窗中输入cmd>按下回车
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.2 从url上传

    1)准备迁移数据

    创建列表文件xxx.txt如下图所示, 以迁移txt文件中3个url指向的文件。每个url单独一行。

    image.png

    2)填写配置文件

    请设置secType=url

    srcAccessKey,srcSecretKey,srcDomain,srcBucket为空即可,如果不为空则会被忽略

    请设置srcPrefix的值为列表文件的绝对路径

    srcType=local
    srcAccessKey=
    srcSecretKey=
    srcDomain=
    srcBucket=
    srcPrefix=D:/list.txt
    

    参考配置文件:url.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    16167430761.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.3 从KS3上传

    1)准备迁移数据

    在本示例中,我们迁移KS3-import桶下的6个文件如下图所示。
    image.png

    2)填写配置文件

    请设置
    secType=ks3

    srcDomain请填写对应访问方式的Endpoint

    image.png
    参考配置文件:ks3.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.4 从百度云上传

    1)准备迁移数据

    在本示例中,我们迁移KS3-import桶下的6个文件如下图所示。
    image.png
    参考配置文件:bos.conf

    2)填写配置文件

    请设置
    secType=bos

    srcDomain请填写桶概览中的官方域名
    image.png
    参考配置文件:bos.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.4 从腾讯云上传

    1)准备迁移数据

    在本示例中,我们迁移cos3-uptool桶下的6个文件如下图所示。
    image.png

    2)填写配置文件

    请设置
    secType=cos

    srcDomain请填写桶概览中的所属地域英文名
    image.png

    srcBucket请填写完整名称,附带编号
    image.png
    参考配置文件:cos.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.5 从七牛云上传

    注意:迁移时因七牛源站收费标准问题,若使用分块功能,会导致每块为整体资源的费用,故不建议使用分块功能时把分块功能阈值调大

    1)准备迁移数据

    在本示例中,我们迁移qiniu-uptool桶下的6个文件如下图所示。
    image.png

    2)填写配置文件

    请设置
    secType=qiniu

    srcDomain请填写桶概览中的外链域名
    image.png
    参考配置文件:qiniu.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    3.6 从阿里云上传

    1)准备迁移数据

    在本示例中,我们迁移oss-uptool桶下的6个文件如下图所示。
    image.png

    2)填写配置文件

    请设置
    secType=oss

    srcDomain请填写对应访问方式的Endpoint
    image.png
    参考配置文件oss.conf

    3)打开命令行

    • Windows下:快捷键Windows+P
    • Linux下:Ctril+Alt+T

    4)移动到KS3-import-x.x.x.jar所在目录

    cd D:\KS3-import-x.x.x-dist
    

    16167429601.png

    5)启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    1616743607.png

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-1.0.0.jar -c xxx.conf start > nohup.out 2>&1 &
    

    其他命令请参考:KS3-import常用指令

    4. 常用指令

    4.1 启动任务

    java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    注意:xxx.conf 配置文件如果不和KS3-import-x.x.x.jar在同一个目录下,-c 需要指明配置文件的正确路径。

    linux环境下如果想要后台执行,则用如下命令:

    nohup java -jar KS3-import-x.x.x.jar -c xxx.conf start > nohup.out 2>&1 &
    

    注意:srcBucket, srcPrefix, dstBucket, dstPrefix确定任务的唯一性

    4.2 查询任务状态

    java -jar KS3-import-x.x.x.jar -c xxx.conf stat
    

    4.3 清空任务数据

    java -jar KS3-import-x.x.x.jar -c xxx.conf clean
    

    注意:

    • 若任务正在运行,则不能清空
    • 若任务未曾运行过,则会提示任务不存在
    • 使用增量上传功能,需保留任务数据

    4.4 导出成功文件列表

     java -jar KS3-import-x.x.x.jar -c xxx.conf export_ok_list ${export_file}
    

    注意:只有任务退出,该操作才允许被执行

    4.5 导出失败文件列表

     java -jar KS3-import-x.x.x.jar -c xxx.conf export_fail_list ${export_file}
    

    注意:只有任务退出,该操作才允许被执行

    4.6 增量上传 以及 失败重传

    等待当前任务退出后,重新执行“启动任务”的命令,要注意,任务的配置文件不要做修改

     java -jar KS3-import-x.x.x.jar -c xxx.conf start
    

    注意事项:

    执行选项start持续运行,所需最小内存为100MB

    5.日志和运行情况

    会在${work_dir}下创建logs目录,执行情况可关注statistic.log,如有问题请将info.log,warn.log,error.log发给ks3售前(后)咨询

    常见问题与注意事项


    1. 检查目标空间是否存在,dstDomain设置和目标空间对应关系是否正确
    2. 检查dstAccessKey和dstSecretKey是否正确
    3. 在windows环境下,srcPrefix目录分隔符用"/“或”\",不能用""
    4. 上传时设置 filterEnable=true fileNameExclude=$ 可满足不上传前缀为$的文件,排除其他格式前缀文件同理。
    5. 每上传一个文件,都会在工具目录下生成一个后缀为.db的文件,记录上传信息。如果要重复上传此文件(文件最后修改时间都没有变),将会提示already uploaded错误信息,删除对应的.db文件后,可正常上传。建议这种情况下,用户使用SDK或者KS3Util进行覆盖上传。
    6. 客户端时间以北京时间为准,否则会导致权限错误。

    文档内容是否对您有帮助?

    根本没帮助
    文档较差
    文档一般
    文档不错
    文档很好

    在文档使用中是否遇到以下问题

    内容不全,不深入
    内容更新不及时
    描述不清晰,比较混乱
    系统或功能太复杂,缺乏足够的引导
    内容冗长

    更多建议

    0/200

    评价建议不能为空

    提交成功!

    非常感谢您的反馈,我们会继续努力做到更好!

    问题反馈