diff --git a/conf/config.ini b/conf/config.ini index 2858cef..d620e61 100644 --- a/conf/config.ini +++ b/conf/config.ini @@ -118,125 +118,3 @@ fileListPath=/data/config/myFileList.txt # 上传前是否检查服务端有数据,由开关 skipSamePath 控制. 执行顺序是先判断 checkLocalRecord, 再判断 skipSamePath, 其中任何一个判断结果跳过,再跳过不执行上传 # 这个开关不会控制上传后是否记录数据库, 一定会记录的. checkLocalRecord=true - -## 从阿里迁移到COS的配置分节 -[migrateAli] -bucket=mybucket-test -accessKeyId=xxxxxxxxxx -accessKeySecret=yyyyyyyyyyy -#友商的地址 -endPoint=oss-cn-shenzhen.aliyuncs.com -# 要迁移的路径的前缀, 如果是迁移bucket下所有的数据, 则prefix为空 -prefix= -# 如果要使用代理进行访问,则填写代理IP地址 -proxyHost= -# 代理的端口 -proxyPort= -# 访问ali时, 是否使用HTTPS传输(传输速度较慢,适用于对传输安全要求高的场景), on开启, off关闭 -srcHttps=off -# 访问ali时, 连接ali服务器的超时时间,单位ms, 默认5000 -#srcConnectTimeout=5000 -# 访问ali时, 读取ali响应的超时时间,单位ms, 默认10000 -#srcSocketTimeout=10000 - -# 从七牛迁移到COS -[migrateQiniu] -# 从七牛迁移到COS的配置分节 -# 七牛的bucket名称 -bucket=mybucket -# 七牛的账户信息 -accessKeyId=xxxxxxxxxx -accessKeySecret=yyyyyyyyyyyyyyyy -# 七牛的下载地址, 对应downloadDomain -endPoint=wwww.bkt.clouddn.com -# 要迁移的路径的前缀, 如果是迁移bucket下所有的数据, 则prefix为空 -prefix= -# 如果要使用代理进行访问,则填写代理地址 -proxyHost= -# 代理端口 -proxyPort= -#公有读bucket可以填off, 其余填on. 默认on -needSign=on - -# 从通过URL列表进行迁移,URL列表里面填写的源文件的下载路径,该路径可以直接下载下来,迁移工具会将其再上传到COS上去 -[migrateUrl] -# 使用url列表迁移,如果urllistPath填的是目录,那么就会把这个目录下所有文件都当作urllist文件去扫描迁移 -# 对于linux绝对路径, 如/a/b/c, 对于windows绝对路径,注意分隔符为两个反斜杠,如E:\\a\\b\\c -urllistPath=/data/mydata/url - -#on:迁移时不去head url,off:会head url,默认off。不去head可能导致源更新了,迁移工具却不知道,适用于确定源不更新,加快迁移速度。 -isSkipHead= - -## 从AWS迁移到COS的配置分节 -[migrateAws] -# aws的bucket -bucket=aws-emr-test -accessKeyId=xxxxxxxx -accessKeySecret=yyyyyyyyyy -# aws的endpoint地址, 必须使用域名, 不能使用region -endPoint=s3.us-east-1.amazonaws.com -# 要迁移的路径的前缀, 如果是迁移所有的,则prefix为空 -prefix= -# 迁移的代理地址 -proxyHost= -# 代理端口 -proxyPort= -# 访问aws时, 是否使用HTTPS传输(传输速度较慢,适用于对传输安全要求高的场景), on开启, off关闭 -srcHttps=off -# 访问aws时, 连接aws服务器的超时时间,单位ms, 默认5000 -#srcConnectTimeout=5000 -# 访问aws时, 读取aws响应的超时时间,单位ms, 默认10000 -#srcSocketTimeout=10000 - -# bucket copy -[migrateBucketCopy] -# 源 bucket的region信息. COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224 -srcRegion=ap-shanghai -# 源 Bucket的名称, 命名规则为{name}-{appid},即bucket名必须包含appid, 例如movie-1251000000 -srcBucketName=mysrcbucket-1251668555 -# 源bucket的endpoint suffix, 一般情况不用填写,适用于自定义域名CNAME到COS上传域名的客户.工具会在自动在在suffix前加上${bucketname}。最终形成的域名是 -# ${bucketName}.${srcEndPointSuffix}. srcEndPointSuffix的优先级比srcRegion高,如果设置了srcEndPointSuffix则会以srcEndPointSuffix来补充域名 -srcEndPointSuffix= -# 源bucket隶属的用户的秘钥 secret_id (可在 https://console.qcloud.com/capi 查看) -# 因为bucket copy支持跨账号,所以如果是另外一个账户的数据,则srcSecretId和common中的secretId不同 -# 如果是同一客户的数据, 则srcSecretId和common中的secretId相同 -srcSecretId=xxxxxxxxxxx -# 源bucket隶属的用户的秘钥 secret_key(可在 https://console.qcloud.com/capi 查看) -srcSecretKey=yyyyyyyyyyyyyyyy -# 如果使用临时密钥访问存储桶,此处配置临时密钥的Token,该密钥需要有源桶的GetBucket(列出存储桶对象)和HeadObject权限 -# srcToken=zzzzzzzzzzz -# 要迁移的cos路径的 -srcCosPath=/ -# 如果只需要迁移部分文件,可以通过srcFileList指定迁移文件列表,例如,只需要迁移aaa/1.jpg和bb/2.jpg,则: -# $cat /data/fileList.txt -# aaa/1.jpg -# bbb/2.jpg -#srcFileList=/data/fileList.txt - -# 存储类型, 标准(Standard), 多AZ标准(Maz_Standard), 低频(Standard_IA), 多AZ低频(Maz_Standard_IA), -# 智能分层(Intelligent_Tiering), 多AZ智能分层(Maz_Intelligent_Tiering), 归档(Archive), 深度归档(Deep_Archive) -# 如果为空则代表复制所有的存储类型 -srcStorageClass= - -[migrateCsp] -bucket=xxx -accessKeyId=xxx -accessKeySecret=xxx -endPoint=xxx.com - -#指定了uriList之后,就只迁uri列表中的数据,不指定则是自动list全部数据然后迁移。uri格式不带域名,如:/dir1/subdir2/a.txt -uriList=/data/uriList.txt -prefix= - -[migrateUpyun] -# 从又拍迁移 -bucket=xxx -accessKeyId=又拍云操作员id -accessKeySecret=又拍云操作员密码 -prefix= -#获取文件列表的顺序,true为正序,false为逆序 -acsendingOrder=true - -#又拍云sdk限制,这个proxy会被设置成全局的proxy -proxyHost= -proxyPort= diff --git a/dep/cos_migrate_tool-1.4.13-jar-with-dependencies.jar b/dep/cos_migrate_tool-1.4.14-jar-with-dependencies.jar similarity index 97% rename from dep/cos_migrate_tool-1.4.13-jar-with-dependencies.jar rename to dep/cos_migrate_tool-1.4.14-jar-with-dependencies.jar index db68b47..ed68be1 100644 Binary files a/dep/cos_migrate_tool-1.4.13-jar-with-dependencies.jar and b/dep/cos_migrate_tool-1.4.14-jar-with-dependencies.jar differ diff --git a/pom.xml b/pom.xml index 96019b5..1ceb162 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.qcloud cos_migrate_tool - 1.4.13 + 1.4.14 jar UTF-8 diff --git a/src/main/java/com/qcloud/cos_migrate_tool/config/ConfigParser.java b/src/main/java/com/qcloud/cos_migrate_tool/config/ConfigParser.java index b476be1..985b26d 100644 --- a/src/main/java/com/qcloud/cos_migrate_tool/config/ConfigParser.java +++ b/src/main/java/com/qcloud/cos_migrate_tool/config/ConfigParser.java @@ -23,6 +23,7 @@ public class ConfigParser { private static final String MIGRATE_TYPE_SECTION_NAME = "migrateType"; private static final String MIGRATE_TYPE = "type"; + private static final String DEPRECATED_TYPE = "deprecatedType"; private static final String COMMON_SECTION_NAME = "common"; private static final String COMMON_REGION = "region"; @@ -323,6 +324,23 @@ private boolean initMigrateType(Preferences prefs) { String migrateTypeStr = getConfigValue(prefs, MIGRATE_TYPE_SECTION_NAME, MIGRATE_TYPE); assert (migrateTypeStr != null); migrateType = MigrateType.fromValue(migrateTypeStr); + + /* check deprecated type + [migrateType] + type=migrateLocal + deprecatedType=on + */ + + String deprecatedStr = getConfigValue(prefs, MIGRATE_TYPE_SECTION_NAME, DEPRECATED_TYPE); + if (!"on".equalsIgnoreCase(deprecatedStr)) { + if (migrateType != MigrateType.MIGRATE_FROM_LOCAL) { + String errMsg = String.format("Deprecated type: %s is no longer supported, only %s is supported.", migrateType, MigrateType.MIGRATE_FROM_LOCAL); + System.err.println(errMsg); + log.error(errMsg); + return false; + } + } + } catch (IllegalArgumentException e) { String errMsg = String.format("invalid config. section:%s, key:%s", MIGRATE_TYPE_SECTION_NAME, MIGRATE_TYPE);