VPS科普网在前面的篇幅中有陆续介绍到腾讯云COS对象存储配合网站静态分离,我们可以使用到WPCOS插件,包括其他也有类似的插件工具实现的。但是这里存在一个问题,如果我们已有本地静态文件在启用对象存储分离之后,如何将数据迁移到对象存储COS中呢?当然也包括如果我们有在使用其他对象存储的时候,如何将数据迁移到腾讯云COS中。
在前面VPS科普网有介绍到COSBrowser工具可以实现可视化类似FTP一样的工具将本地的数据迁移到COS中。但是稍微比较繁琐,我们需要先将其他对象存储或者是本地网站目录的文件迁移到本地,然后利用COSBrowser客户端工具再传输,一般的个人网站、企业网站数据量不大,那肯定是没有多少问题。如果遇到几百M、几个G数据,那通过这个办法就比较笨拙。
VPS科普网前几天也有介绍到COS后台自带的"腾讯云对象存储批量迁移至其他对象存储工具和设置方法",我们可以直接在线将大部分第三方对象存储的数据直接迁移进来,或者今天我们需要介绍的一款也是来自官方的COS MigratiON工具,可以实现本地、第三方对象存储命令式迁移,这个效率会高一些,但是操作上并不是那么直接可视化的,我们一起看看。
第一、COS Migration工具特点
COS Migration 是一个集成了 COS 数据迁移功能的一体化工具。通过简单的配置操作,用户可以将源地址数据快速迁移至 COS中。具备的特点:
1、从本地迁移, migrateLocal(本地迁移工具, 同之前的本地同步工具)
2、从友商迁移, migrateAWS(从aws迁移), migrateAli(从阿里迁移), migrateQiniu(从七牛迁移), migrateUpyun(从又拍云迁移)
3、从url列表迁移, migrateUrl(这些url都是可以直接下载的,将要迁移的url放到一个文件或者多个文件里)
4、 COS的bucket复制. migrateBucketCopy(将COS一个bucket下的数据复制到另外一个bucket, 支持跨账号跨地域,前提是账户需要对源bucket源bucket有可读权限,对目的bucket有putObjectCopy权限)
第二、COS Migration 工具安装和使用
COS Migration 支持 Windows、Linux 和 macOS 系统,需要JDK 1.8 X64或以上版本支持。
1、下载与安装
下载地址:https://github.com/tencentyun/cos_migrate_tool_v5
2、解压与安装
Windows系统我们可以解压放到自己的目录中:
C:\Users\Administrator\Downloads\cos_migrate
Linux 我们也是解压到某个目录:
unzip cos_migrate_tool_v5-master.zip && cd cos_migrate_tool_v5-master
然后可以看到正确的目录结构:
COS_Migrate_tool
|——conf #配置文件所在目录
| |——config.ini #迁移配置文件
|——db #存储迁移成功的记录
|——dep #程序主逻辑编译生成的JAR包
|——log #工具执行中生成的日志
|——opbin #用于编译的脚本
|——src #工具的源码
|——tmp #临时文件存储目录
|——pom.xml #项目配置文件
|——README #说明文档
|——start_migrate.sh #Linux 下迁移启动脚本
|——start_migrate.bat #Windows 下迁移启动脚本
3、修改配置文件
我们在启动执行之前需要配置文件:
./conf/config.ini
我们可以看到这个文件里有很详细的说明。
我们可以从上往下看,设置类型:
[migrateType] type=migrateLocal
目前类型支持也不少:
migrateType | 描述 |
---|---|
migrateLocal | 从本地迁移至 COS |
migrateAws | 从 AWS S3 迁移至 COS |
migrateAli | 从阿里 OSS 迁移至 COS |
migrateQiniu | 从七牛迁移至 COS |
migrateUrl | 下载 URL 迁移到 COS |
migrateBucketCopy | 从源 Bucket 复制到目标 Bucket |
migrateUpyun | 从又拍云迁移到 COS |
然后我们需要配置COS的迁移参数:
# 迁移工具的公共配置分节,包含了需要迁移到目标 COS 的账户信息。
[common] secretId=COS_SECRETID
secretKey=COS_SECRETKEY
bucketName=examplebucket-1250000000
region=ap-guangzhou
storageClass=Standard
cosPath=/
https=off
tmpFolder=./tmp
smallFileThreshold=5242880
smallFileExecutorNum=64
bigFileExecutorNum=8
entireFileMd5Attached=on
daemonMode=off
daemonModeInterVal=60
executeTimeWindow=00:00,24:00
encryptionType=sse-cos
根据我们实际的COS参数填写,配置文件说明很详细,我们可以参考备注。对应的说明可参考:
名称 | 描述 | 默认值 |
---|---|---|
secretId | 用户密钥 SecretId,请将COS_SECRETID 替换为您的真实密钥信息。 | - |
secretKey | 用户密钥 SecretKey,请将COS_SECRETKEY 替换为您的真实密钥信息。可前往 访问管理控制台 中的云 API 密钥页面查看获取 | - |
bucketName | 目的 Bucket 的名称, 命名格式为 <BucketName-APPID> ,即 Bucket 名必须包含 APPID,例如 examplebucket-1250000000 | - |
region | 目的 Bucket 的 Region 信息。 | - |
storageClass | 存储类型:Standard(标准存储),Standard_IA(低频存储),Archive(归档存储) | Standard |
cosPath | 要迁移到的 COS 路径。/ 表示迁移到 Bucket 的根路径下,/folder/doc/ 表示要迁移到 Bucket的/folder/doc/ 下,若 /folder/doc/ 不存在,则会自动创建路径 | / |
https | 是否使用 HTTPS 传输:on 表示开启,off 表示关闭。开启传输速度较慢,适用于对传输安全要求高的场景 | off |
tmpFolder | 从其他云存储迁移至 COS 的过程中,用于存储临时文件的目录,迁移完成后会删除。要求格式为绝对路径: Linux 下分隔符为单斜杠,例如 /a/b/c Windows 下分隔符为两个反斜杠,例如 E:\\a\\b\\c 默认为工具所在路径下的 tmp 目录 | ./tmp |
smallFileThreshold | 小文件阈值的字节,大于等于这个阈值使用分块上传,否则使用简单上传,默认5MB | 5242880 |
smallFileExecutorNum | 小文件(文件小于 smallFileThreshold)的并发度,使用简单上传。如果是通过外网来连接 COS,且带宽较小,请减小该并发度 | 64 |
bigFileExecutorNum | 大文件(文件大于等于 smallFileThreshold)的并发度,使用分块上传。如果是通过外网来连接 COS,且带宽较小,请减小该并发度 | 8 |
entireFileMd5Attached | 表示迁移工具将全文的 MD5 计算后,存入文件的自定义头部 x-cos-meta-md5 中,用于后续的校验,因为 COS 的分块上传的大文件的 etag 不是全文的 MD5 | on |
daemonMode | 是否启用 daemon 模式:on 表示开启,off 表示关闭。daemon 表示程序会循环不停的去执行同步,每一轮同步的间隔由 daemonModeInterVal 参数设置 | off |
daemonModeInterVal | 表示每一轮同步结束后,多久进行下一轮同步,单位为秒 | 60 |
executeTimeWindow | 执行时间窗口,时刻粒度为分钟,该参数定义迁移工具每天执行的时间段。例如: 参数 03:30,21:00,表示在凌晨 03:30 到晚上 21:00 之间执行任务,其他时间则会进入休眠状态,休眠态暂停迁移并会保留迁移进度, 直到下一个时间窗口自动继续执行 | 00:00,24:00 |
encryptionType | 表示使用 sse-cos 服务端加密 | 默认不填,需要服务端加密时填写 |
然后我们需要去配置目标源,根据我们上面的类型是本地还是第三方友商对象存储,然后选择对应的配置即可,其他可以不管。
如果迁移本地数据(migrateLocal):
# 从本地迁移到 COS 配置分节
[migrateLocal] localPath=E:\\code\\java\\workspace\\cos_migrate_tool\\test_data
excludes=
ignoreModifiedTimeLessThanSeconds=
这是示范配置,具体参数:
配置项 | 描述 |
---|---|
localPath | 本地路径,要求格式为绝对路径:
|
excludes | 要排除的目录或者文件的绝对路径,表示将 localPath 下面某些目录或者文件不进行迁移,多个绝对路径之前用分号分割,不填表示 localPath 下面的全部迁移 |
ignoreModifiedTimeLessThanSeconds | 排除更新时间与当前时间相差不足一定时间段的文件,单位为秒,默认不设置,表示不根据 lastmodified 时间进行筛选,适用于客户在更新文件的同时又在运行迁移工具,并要求不把正在更新的文件迁移上传到 COS,例如设置为300,表示只上传更新了5分钟以上的文件 |
如果迁移阿里云对象存储数据源(migrateAli):
# 从阿里 OSS 迁移到 COS 配置分节
[migrateAli] bucket=bucket-aliyun
accessKeyId=yourAccessKeyId
accessKeySecret=yourAccessKeySecret
endPoint= oss-cn-hangzhou.aliyuncs.com
prefix=
proxyHost=
proxyPort=
具体参数参考:
配置项 | 描述 |
---|---|
bucket | 阿里云 OSS Bucket 名称 |
accessKeyId | 将 yourAccessKeyId 替换为用户的密钥 |
accessKeySecret | 将 yourAccessKeySecret 替换为用户的密钥 |
endPoint | 阿里云 endpoint 地址 |
prefix | 要迁移的路径的前缀,如果是迁移 Bucket 下所有的数据, 则 prefix 为空 |
proxyHost | 如果要使用代理进行访问,则填写代理 IP 地址 |
proxyPort | 代理的端口 |
如果是AWS对象存储数据迁移(migrateAws):
# 从 AWS 迁移到 COS 配置分节
[migrateAws] bucket=bucket-aws
accessKeyId=AccessKeyId
accessKeySecret=SecretAccessKey
endPoint=s3.us-east-1.amazonaws.com
prefix=
proxyHost=
proxyPort=
具体参数:
配置项 | 描述 |
---|---|
bucket | AWS 对象存储 Bucket 名称 |
accessKeyId | 将 AccessKeyId 替换为用户的密钥 |
accessKeySecret | 将 SecretAccessKey 替换为用户的密钥 |
endPoint | AWS 的 endpoint 地址,必须使用域名,不能使用 region |
prefix | 要迁移的路径的前缀,如果是迁移 Bucket 下所有的数据,则 prefix 为空 |
proxyHost | 如果要使用代理进行访问,则填写代理 IP 地址 |
proxyPort | 代理的端口 |
如果是七牛对象存储数据(migrateQiniu):
# 从七牛迁移到COS配置分节
[migrateQiniu] bucket=bucket-qiniu
accessKeyId=AccessKey
accessKeySecret=SecretKey
endPoint=www.bkt.clouddn.com
prefix=
proxyHost=
proxyPort=
具体参数:
配置项 | 描述 |
---|---|
bucket | 七牛对象存储 Bucket 名称 |
accessKeyId | 将 AccessKey 替换为用户的密钥 |
accessKeySecret | 将 SecretKey 替换为用户的密钥 |
endPoint | 七牛下载地址,对应 downloadDomain |
prefix | 要迁移的路径的前缀,如果是迁移 Bucket 下所有的数据,则 prefix 为空 |
proxyHost | 如果要使用代理进行访问,则填写代理 IP 地址 |
proxyPort | 代理的端口 |
如果是列表URL数据(migrateUrl):
# 从 URL 列表下载迁移到 COS 配置分节
[migrateUrl] urllistPath=D:\\folder\\urllist.txt
参数参考:
配置项 | 描述 |
---|---|
urllistPath | URL 列表的地址,内容为 URL 文本,一行一条 URL 原始地址(例如http://aaa.bbb.com/yyy/zzz.txt ,无需添加任何双引号或其他符号)。URL 列表的地址要求为绝对路径:
|
如果是COS存储桶之间相互复制(migrateBucketCopy):
# 从源 Bucket 迁移到目标 Bucket 配置分节
[migrateBucketCopy] srcRegion=ap-shanghai
srcBucketName=examplebucket-1250000000
srcSecretId=COS_SECRETID
srcSecretKey=COS_SECRETKEY
srcCosPath=/
参数参考:
配置项 | 描述 |
---|---|
srcRegion | 源 Bucket 的 Region 信息,请参照 可用地域 |
srcBucketName | 源 Bucket 的名称,命名格式为 <BucketName-APPID> ,即 Bucket 名必须包含 APPID,例如 examplebucket-1250000000 |
srcSecretId | 源 Bucket 隶属的用户的密钥 SecretId,可在 云 API 密钥 查看。如果是同一用户的数据,则 srcSecretId 和 common 中的 SecretId 相同,否则是跨账号 Bucket 拷贝 |
srcSecretKey | 源 Bucket 隶属的用户的密钥 secret_key,可在 云 API 密钥 查看。如果是同一用户的数据,则 srcSecretKey 和 common 中的 secretKey 相同,否则是跨账号 Bucket 拷贝 |
srcCosPath | 要迁移的 COS 路径,表示该路径下的文件要迁移至目标 Bucket |
如果迁移又拍云数据(migrateUpyun):
[migrateUpyun] # 从又拍迁移
bucket=xxx
#又拍云操作员的 ID
accessKeyId=xxx
#又拍云操作员的密码
accessKeySecret=xxx
prefix=#又拍云 sdk 限制,这个 proxy 会被设置成全局的 proxy
proxyHost=
proxyPort=
参考参数:
配置项 | 描述 |
---|---|
bucket | 又拍云 USS Bucket 名称 |
accessKeyId | 替换为又拍云操作员的 ID |
accessKeySecret | 替换为又拍云操作员的密码 |
prefix | 要迁移的路径的前缀,如果是迁移 Bucket 下所有的数据,则 prefix 为空 |
proxyHost | 如果要使用代理进行访问,则填写代理 IP 地址 |
proxyPort | 代理的端口 |
目前支持多个第三方对象存储迁移至COS,也支持COS之间的拷贝,或者URL目录迁移。配置完毕文件之后,我们根据自己所在的系统,Windows或者Linux 触发的命令是不同的。然后根据实际配置可以看到执行。具体的文档我们也可以参考:https://cloud.tencent.com/document/product/436/15392。
未经允许不得转载:Just My Socks中文教程网 » 腾讯云对象存储COS Migration工具可以实现本地、第三方对象存储命令式迁移,这个效率会高一些