US3SYNC 是一款将不同源的数据同步到 S3 的迁移工具。通过将 US3SYNC 部署在本地或者云主机中,可以便捷地从本地或者其他云环境中将数据迁移到 S3 存储空间。US3SYNC工具可以创建两种模式的任务:
普通模式: 普通同步任务可以将源端某个指定前缀或文件夹的文件批量的同步到US3上。
fetch模式: fetch模式的同步任务是通过POST请求(描述需要同步的文件URL和目的位置)将文件同步到指定的位置上。可以指明文件同步成功和失败后的回调接口,US3SYNC会在同步任务完成后,发送相应的通知。
普通任务工作原理
图中master节点与worker节点功能:
master节点:
单点部署,负责迁移任务的管理。其主要逻辑是从源端拉取文件列表,然后将需要迁移的文件派发给worker进程迁移。
worker节点:
支持节点扩展,负责迁移文件。其主要逻辑是从源端下载文件,然后将文件上传到目的端。
master节点与worker节点可以部署在同一台机器,也可以部署在多台机器上,用户可以根据需要自行扩展worker节点,下面分别介绍:
部署在同一台机器:
master节点和worker节点通过启动时配置的内部通信监听地址进行通信。用户需要确保配置给worker节点的路径是单独的路径,不可与master路径以及其他worker路径重复。
部署在不同机器:
master节点和worker节点通过启动时配置的内部通信监听地址进行通信,确保该地址在worker机器上可以访问。用户需要确保配置给worker节点的路径是单独的路径,不可与master路径以及其他worker路径重复。
Fetch任务工作原理
Fetch类型的任务跟普通任务工作原理大致类似,不同的是同步任务的源端需要发送POST请求来指定,而不是根据配置的源端的位置自动拉取。
POST请求语法
POST /fetch/ HTTP 1.1Authorization: AuthContent-Type:application/jsonCopy
Authorization为必选项,content-type, date等都是可选项
例如: Authorization: UCloud xxxx-xxxx-xxxx-xxxx-xxxx:xxxxxxxxxxxxx 计算方法伪码如下:
method := "POST" md5 := xxxxxxcontentType := xxxxxxdate := xxxxxprivateKey = xxxxx-xxxx-xxxxx-xxxxpublicKey = xxxx-xxxx-xxxx-xxxxstrToSign = method + "\n" + md5 + "\n" + contentType + "\n" + date + "\n" signature = HmacSHA1(strToSign, privateKey) signature = Base64(signature) Authorization: "UCloud " + publicKey + ":" + signatureCopyErrorSuccess
名称 | 描述 | 类型 | 必选 |
---|---|---|---|
Url | 源站资源地址,需要url encode | String | 是 |
Key | 桶内文件路径,不需要url encode | String | 是 |
Bucket | 桶名 | String | 是 |
JobId | Fetch任务Id | String | 是 |
SuccessCallbackUrl | 回源拉取成功的回调地址 | String | 否 |
FailureCallbackUrl | 回源拉取失败的回调地址 | String | 否 |
此处的JobId可以在界面中获取
名称 | 描述 | 类型 |
---|---|---|
RetCode | 请求状态码 | Int |
ErrMsg | 请求信息 | String |
TaskId | 任务的唯一id | String |
您可以在请求中指定任务完成后的回调地址,US3SYNC会依照任务执行结果给相应的地址放松POST请求,请求内容示例如下:
注:暂不支持源端为归档类型的文件迁移到 S3。
当前版本:1.10.4
运行环境:
Linux:
CentOS 7.0 及以上 (可通过cat /etc/redhat-release查看)
Ubuntu 16.04 及以上 (可通过cat /etc/issue查看)
US3SYNC 依赖 telnet,expect,rsync 命令,确保预装这些命令,使用 yum 源做包管理可以使用以下命令安装:
yum install -y telnet expect rsyncCopyErrorSuccess
下载并解压
wget -O US3SYNC.tgz "https://ufile-release.cn-bj.ufileos.com/US3SYNC/v1.10.4/US3SYNC.tgz"tar xzf US3SYNC.tgzcd ./US3SYNCCopyErrorSuccess
启动master服务
./console.sh start请设置缓存服务监听端口[9000]:请设置缓存服务密码[user-passwd]:# 云主机一般绑定EIP,建议ip地址使用0.0.0.0请设置web 服务监听地址[0.0.0.0:443]:# 内部通信地址不提供外网服务,建议ip地址使用机器内网ip请设置内部通信监听地址[x.x.x.x:8080]:请设置报错重试次数[10]:请设置web 登录使用的用户名[root]: 请设置web 登录使用的密码[passwd]: US3SYNC start success!# 查看master服务./console.sh show# 结束master服务./console.sh stop# 验证# 查看进程是否正常启动./console.sh showCopyErrorSuccess
添加worker节点
服务启动后,在浏览器中打开:https://<web服务监听IP>:<web服务监听端口>/
注:使用云主机部署迁移服务时,这里需要使用EIP,而不是0.0.0.0。
页面登录,使用启动时设置的用户名和密码。
添加工作节点,参考 创建节点界面说明,需要为每个节点提供唯一工作路径。 每个工作节点需要提供唯一工作路径,如果路径不存在会自动创建对应目录。
注:建议使用内网ip。