全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

指定URL列表迁移至KS3示例

最近更新时间:2024-10-10 20:30:03

本文主要介绍如何通过指定URL列表将数据上传至KS3。

迁移任务开始执行前,需先进行运行环境及工具的安装、开通KS3服务并获取AK和SK,详情参见:快速使用

1. 准备迁移数据

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

image.png

2. 下载并填写配置文件

KS3 Import工具需设置配置文件用于创建迁移任务,KS3为用户准备了配置文件模版,即url.conf文件,用户下载后在该模版文件的基础上设置相应参数即可。

建议url.conf 配置文件与KS3Import工具包KS3-import-x.x.x.jar下载在同一个目录下。

配置文件模版中的一些非必填参数已设置了默认值,客户如果没有特殊需求,无需修改。指定URL迁移场景需要设置的参数主要有:

  • 设置迁移源端类型为指定URL迁移,即设置参数srcType=url。

  • 设置dstAccessKey和dstSecretKey参数,即KS3 AK和SK。

  • 设置xxx.txt列表文件的绝对路径,即srcPrefix参数。

  • 设置迁移目标Bucket所在区域对应域名,即dstDomain参数。

  • 设置迁移目标Bucket名称,即dstBucket参数。

  • 设置迁移目标前缀,即dstPrefix参数。

配置文件参数示例:
taskName=url_test
srcType=url
srcPrefix=D:/list.txt
dstAccessKey=ks3AK
dstSecretKey=ks3SK
dstDomain=ks3-cn-beijing.ksyuncs.com
dstBucket=mybucket
dstPrefix=docs/
threadsNum=10
cannedAcl=Private
storageType=STANDARD
skipDstExistFile=0
crcCheckEnabled=true

singleFileSize=104857600
partSize=104857600
uploadPartPoolSize=10

maxNetThroughput=-1
maxNetThroughputRange=1000#2000#3000
maxNetThroughputTimeRange=11:50:00-15:48:50#15:49:00-15:49:50#15:50:00-15:51:50
useHttps=true

filterEnable=false
fileNameInclude=
fileNameExclude=
modifyTimeRange=
objectKeyRegexInclude=
objectKeyRegexExclude=

incrementalMode=false
incrementalModeInterval=900
incrementalModeCount=1

useLocalDBCheck=true
callProgressUrl=
abortFailedNum=-1
serverSideEncryption=false
fileNameDelimiter=
参数说明

参数

是否必选

说明

taskName

迁移任务名称,不填写该值时系统将随机生成字符串

srcType

迁移源端类型,填写值为:url

srcPrefix

URL列表文件的绝对路径。列表文件内包含要上传的URL,每行一个URL,支持HTTP和HTTPS协议

目标文件名称生成规则:点击查看

dstAccessKey

目的端对象存储的 AccessKey ID,即KS3 AccessKey

dstSecretKey

目的端对象存储的 AccessKey Secret,即KS3 SecretKey

dstDomain

Bucket所在区域对应域名,不同区域对应的域名不同,支持填写内网/外网域名

KS3域名详情:点击查看

dstBucket

KS3 Bucket名称 (多桶迁移COPY类型可不填写,若填写则进行忽略)

dstPrefix

目标前缀,迁移至KS3后的对象将自动添加此前缀

目标文件名称生成规则:点击查看

threadsNum

并发上传的线程数,根据客户端资源实际情况进行配置。

  • 默认值:10

  • 取值类型:正整数

1. 当文件较大涉及到分块时,可与uploadPartPoolSiz一起使用,总并发数=threadsNum * uploadPartPoolSize

2. 初次不建议设置过高,建议运行过程中从小到大逐渐尝试调整并发数值

3. 该参数支持热加载,即迁移过程中修改配置文件后无需重启命令即可生效

cannedAcl

文件权限配置,支持如下配置:

  • private:私密

  • publicRead:公开

storageType

文件存储类型,支持如下类型:

  • STANDARD:标准存储

  • STANDARD_IA:低频存储

  • ARCHIVE:归档存储

skipDstExistFile

迁移时是否跳过目标桶内已存在的文件

  • 取值类型:int

支持如下配置:

  • 0(默认值):优先判断LastModified,源文件大则覆盖上传;其次判断Size,不一致则覆盖上传

  • 1:条件覆盖,当lastmodified、Size、Type其中存在一个不同,则覆盖上传

  • 2:全覆盖,存在同名文件均覆盖上传

  • 3:不覆盖,存在同名文件均跳过

crcCheckEnabled

是否开启CRC64校验,取值如下:

  • true:开启(默认)

  • false:关闭

singleFileSize

分块上传文件大小阈值 ,即当文件超过指定设置大小时,文件会进行分块上传。单位为Byte

  • 默认值:100MB,即大于100MB的文件将使用分块上传

partSize

分块上传块大小。即当文件大小满足分块阈值时,将按照该设置值进行分块上传,单位为Byte

  • 默认值:100MB

uploadPartPoolSize

单文件分块传输并发数

  • 默认值:10

1. 可搭配threadsNum参数值一起使用,总并发数=threadsNum * uploadPartPoolSize

2. 该参数支持热加载,即迁移过程中修改配置文件后无需重启命令即可生效

maxNetThroughput

带宽限速,单位为KB/s,取值<=0表示不限速

  • 默认值:-1

  • 示例:当限速为10Mb/s时,则换算为以KB/s为单位的值:(10/8)*1024=1280KB/s

maxNetThroughputRange

使用分时限流的带宽限速,可设置多个时间段的带宽限速值,单位为KB/s,取值<=0表示不限速

  • 示例:maxNetThroughputRange= 1000#2000#3000。限流区间要与限流时间段一一对应,否则设置无效

1. 该参数需搭配maxNetThroughputTimeRange使用,两个参数必须同时设置才会生效

2. 执行优先级:分时限速>maxNetThroughput>不限速,不在限流时间段内的限速值为maxNetThroughput的取值

maxNetThroughputTimeRange

执行分时带宽限速的时间段,可设置多个限流时间段,限流区间要与限流时段一一对应,否则设置无效。

  • 示例:如maxNetThroughputTimeRange= 11:50:00-15:48:50#15:49:00-15:49:50#15:50:00-15:51:50

  • 时间重叠执行规则:当时间段存在重叠时以第一个时间段的限速为准

参数与maxNetThroughputRange搭配使用,两个参数必须同时设置才会生效

useHttps

是否开启HTTPS,取值如下

  • true(默认):开启HTTPS

  • false:不开启HTTPS

filterEnable

过滤器开关,可根据文件名、URL或文件修改时间过滤文件。取值如下:

  • 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

  • 示例:

    a. 不限制开始时间:#2016-01-12 00:00:00

    b. 不限制结束时间:2005-01-12 00:00:00#

filterEnable=true时该配置生效,否则不生效

objectKeyRegexInclude

URL白名单。使用正则表达式匹配文件的URL,符合规则的URL指定文件被迁移

1. filterEnable=true时该配置生效,否则不生效

2. 正则匹配优先级大于普通匹配,比如同时配置objectKeyRegexInclude和fileNameInclude时,只有objectKeyRegexInclude生效

objectKeyRegexExclude

URL黑名单。使用正则表达式匹配文件的URL,符合规则的URL指定文件不迁移

1. filterEnable=true时该配置生效,否则不生效

2. 正则匹配优先级大于普通匹配,比如同时配置objectKeyRegexExclude和fileNameExclude时,只有objectKeyRegexExclude生效

incrementalMode

是否开启增量迁移,支持如下配置

  • true:开启

  • false:关闭(默认)

incrementalModeInterval

开启增量迁移时间间隔,单位为秒

仅在开启增量迁移模式下,incrementalModeInterval参数才有效,可配置的最小时间间隔为900秒,不建议设置小于3600秒,会浪费大量请求,造成系统额外开销

incrementalModeCount

增量迁移若干次数后结束迁移任务

  • 类型:整数型

  • 取值范围:1~30

  • 默认为1

useLocalDBCheck

是否优先使用本地.db文件判断文件是否已经上传过,取值如下:

  • true:使用本地.db文件判断文件是否已经上传过(默认)

  • false:通过拉取目标桶内文件信息判断文件是否已经上传过

1. 每启动一个Import任务都会在本地生成一个后缀为.db的文件,记录上传信息。

2. 如果用户把KS3上已经迁移过的文件进行了修改或删除,推荐设置useLocalDbCheck=false。

callProgressUrl

任务进度回调URL,可以在任务运行中和运行结束时向配置的URL上报任务进度

abortFailedNum

任务中断阈值,默认值为-1,取值说明如下:

  • abortFailedNum < 0:迁移任务时,无论迁移失败多少对象,都会继续执行任务,适用于长时间、不确定源端对象能否访问,弱网环境下的业务场景。

  • abortFailedNum = 0:只要有一个对象迁移失败,将中断迁移任务,并显示任务失败,适用于较短时间迁移、测试、强一致性的业务场景。

  • abortFailedNum = X:连续第X+1个对象迁移失败后,将中断迁移任务,并显示任务失败,适用于长时间迁移,容忍网络抖动的业务场景。

abortFailedNum参数用于设置连续迁移失败的对象数量,不包含断断续续迁移失败对象,且迁移过程中存在并发,暂停迁移任务后,Import打印显示的失败对象数量可能大于abortFailedNum参数值。

serverSideEncryption

上传到KS3中的数据是否采用加密(KS3托管密钥的服务端加密SSE-S3),取值如下:

  • true:加密

  • false:不加密(默认)

fileNameDelimiter

表示URL列表中URL地址和相对文件名称间的分隔符,如不填写将按照原有逻辑生成文件名。

规则说明:点击查看

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
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 &

其他常用指令请参见文档:快速使用

其他说明

1. 日志和运行情况

KS3 Import工具执行迁移任务时会在${work_dir}下创建logs目录,该目录包含info.logwarn.logerror.log三个日志文件,如有问题可将日志文件发给KS3售前/售后咨询。

2. 目标文件名称生成规则

KS3 Import工具会遍历列表文件中的每个URL链接,并执行以下步骤:

  • 首先确定字符串end的值,它表示去掉查询参数后的URL长度。如果URL中不包含问号(即没有查询参数),则end的值为URL的长度。如果包含问号,end的值为问号在URL中的位置。

  • 接下来,截取URL中的相对文件名。首先找到第一个斜杠(/)字符出现的位置(跳过//之后的字符),然后从该位置+1开始,截取直到end位置的字符串,得到相对文件名。

  • 如果dstPrefix为空,objectKey将是相对文件名。如果dstPrefix不为空,那么objectKey将是dstPrefix和相对文件名的组合,即objectKey=dstPrefix+相对文件名。

示例:

假设有以下参数值:

dstPrefix=upload/
srcType=url

以上示例中,如URL地址为:https://example.com/files/data1.txt?abc=123,将生成以下objectKey:

upload/files/data1.txt

这是因为end的值为问号在URL中的位置,从URL中截取的相对文件名为files/data1.txt。最后,使用dstPrefix和相对文件名的组合作为objectKey。

如需保持与URL地址显示的目录一致,只需将dstPrefix设置为与URL目录一致的名称即可。

当设置fileNameDelimiter参数时,最终将按照客户指定分隔符后的内容生成相对文件名。

fileNameDelimiter参数表示URL地址与相对文件名的分隔符。

示例

假如有以下设置参数:

dstPrefix=upload/
srcType=url
fileNameDelimiter=,

以上示例中,如URL列表为:https://example.com/files/data1.txt,aaa/bbb.txt,则URL地址为https://example.com/files/data1.txt,最终生成以下objectKey:

upload/aaa/bbb.txt

这是因为URL地址与相对文件名的分隔符设置为了逗号(,),则URL列表中逗号(,)前的内容https://example.com/files/data1.txt表示URL地址,逗号(,)后的内容aaa/bbb.txt表示相对文件名。所以最终文件的Key=dstPrefix+相对文件名,即upload/aaa/bbb.txt

1. fileNameDelimiter不支持只设置一个空格或字符串的开头为空格,否则Import工具会将空格忽略。

2. 如果URL列表中出现了多个分隔符,Import将以第一个出现的分隔符为准。

3. URL列表中的URL地址如果存在特殊字符(例如中文、空格、#(井号)、制表符等),需要用户预先进行URL编码,分隔符和相对文件名不需要客户编码。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈