1. 背景

项目需要将华为云的OBS对象存储服务的存储桶bucket的内容迁移复制到AWS云的S3存储桶中,AWS中暂无实现改需求的云服务,所以采用开源的第三方软件rclone来实现。

rclone可以使用在linux操作系统中,是一种命令行形式的工具。

2. 已知环境信息

华为云OBS:

1. 已从统一身份认证服务IAM中获取到账号的access_key_id和secret_access_key;

2. 存储桶区域:西南-贵州   cn-southwest-2

AWS S3:

1. 已从统一身份认证服务IAM中获取到账号的access_key_id和secret_access_key;

2. 存储桶区域:新加坡   ap-southeast-1

3. 安装rclone

3.1 安装包下载

采用curl的形式下载,在Linux服务器中输入命令(amd64类型):

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip

也可以在官网中下载对应的安装包,上传到服务器(可根据服务器类型选择不同的安装包):

官网下载地址:/

3.2 安装rclone

解压zip安装包:

unzip rclone-current-linux-amd64.zip

命令授权:

cd rclone-v1.60.0-linux-amd64/
#这里目录名称可能不一样,注意cd进入的目录即可sudo cp rclone /usr/sbin/
sudo chown root:root /usr/sbin/rclone
sudo chmod 755 /usr/sbin/rclone

3.3 开始配置

rclone的配置来源于rclone.conf文件,软件支持使用命令生成配置文件,也可以直接在配置文件中输入相关的内容,在这两种方式中二选一即可。

3.3.1 (方式一)直接编辑配置文件

我们直接创建配置目录并编辑配置文件,简单明了,明白各个配置参数的意思即可。

mkdir -p /root/.config/rclone/
touch /root/.config/rclone/rclone.conf
vim /root/.config/rclone/rclone.conf

输入以下内容,根据环境信息进行相应的配置。

[s3]    #1号配置的名称,随便定义
type = s3    #服务类型,为S3类型的服务
provider = AWS    #供应商,我这里是AWS
env_auth = false
access_key_id = xxxxxx    #这里对应的是aws账号access_key_id
secret_access_key = xxxxxxxx    #这里对应的是aws账号secret_access_key
region = ap-southeast-1    #地区,我的S3桶位于新加坡区域
endpoint = s3.ap-southeast-1.amazonaws.com    #endpoint,新加坡区域[obs]    #2号配置的名称,随便定义
type = s3    #服务类型,为S3类型的服务
provider = HuaweiOBS    #供应商,我这里是华为云OBS
access_key_id = xxxxx    #这里对应的是华为云账号access_key_id
secret_access_key = xxxx    #这里对应的是华为云账号secret_access_key
region = cn-southwest-2    #地区,我的OBS桶位于贵阳区域
endpoint = obs.cn-southwest-2.myhuaweicloud.com    #endpoint,贵阳区域

进行验证,输入命令查看两份配置各自的情况:

rclone lsd obs:
#注:lsd 列出
#注:obs: obs代表是配置的名称,即rclone.conf中的[obs]这行,冒号表示obs在配置对应的区域-贵阳-中的所有桶名

验证成功后,说明配置已经成功,可以访问到了,接下来跳转到3.4章节进行数据复制。

3.3.2 (方式二)生成配置文件

输入rclone config命令,进入生成配置文件的流程:

rclone config

输入n,新建配置。

输入配置的名称

输入5,选择存储类型为S3,泛指对象存储服务。

输入1,选择供应商为AWS

输入1

输入access_key_id

输入secret_access_key

输入区域,本次AWS的区域为新加坡,输入12或者ap-southeast-1

输入endpoint,输入12,对应的是新加坡区域

访问限制,直接回车,不需要。

是否配置高级设置,输入n否

是否保存,输入y保存

输入q退出。

按照此方法将源端和目的端的2个配置都配置完成。

配置文件位置/root/.config/rclone/rclone.conf

3.4 数据复制

完成配置文件并验证成功后,就可以开始进行数据复制了。

此处我们简单的使用copy或者sync参数

不同处是copy是增量复制,只复制目的端缺少的。例如两端数据一样后,源端删除了某个文件a.txt,再执行一次copy,目的端对应的文件a.txt仍然存在;

sync是同步,会将目的端同步为源端的情况,会删除目的端中源端没有的文件。例如两端数据一样后,源端删除了某个文件a.txt,再执行一次sync,目的端对应的文件a.txt也会被删掉。

copy:

#命令解析
#rclone copy增量复制,不会删除目的端比源端多的文件 -P显示速度 源端配置名:桶名 目的端配置名:桶名rclone copy -P obs:ydstestbucket s3:prod-public-rewards

结果如下,可以看到复制过去了2个文件:

当我们删除obs中的1个文件后,再次执行命令时,就可以看到只check了1次,同时,在目的端,被删除的文件依然存在:

 sync:

#命令解析
#rclone sync同步,将目的端同步为源端数据 -P显示速度 源端配置名:桶名 目的端配置名:桶名rclone sync -P obs:ydstestbucket s3:prod-public-rewards

结果如下,可以看到复制过去了2个文件:

当我们删除obs中的1个文件后,再次执行命令时,就可以看到check了2次,同时也进行了一次删除,这时就完成了目的端向源端同步:

当然,rclone还有很多的参数和命令,可以自行学习。

3.5 后台窗口命令screen

当我们需要复制的桶里面数据过多时,一直开着命令窗口界面就不是一个很稳妥的办法,这时我们可以开启一个后台运行窗口来运行rclone复制命令。

3.5.1 安装screen

使用yum安装即可

yum install screen -y

3.5.2 创建后台窗口

#命令   screen -S 后台窗口名称
#例如:screen -S window01

这时可以看到我们的命令行进入了一个新的窗口了。这时,我们可以在这个窗口中执行耗时较长的rclone数据复制命令。

例如,这里我们执行一个ping命令,使它一直进行ping操作:

然后Crtl+A+D退出后台窗口。

输入screen -ls可以查询到正在后台运行中的窗口:

screen -ls

输入screen -r 窗口名,可以再次进入窗口:

screen -r window01

可以看到后台窗口还在执行ping命令:

3.5.3 结束后台窗口

当后台窗口执行命令结束后,可以输入exit退出并关闭后台窗口,也可以在Crtl+A+D退出窗口后,kill掉screen窗口的进程,然后输入screen -wipe清理。

screen -S [name]    #创建并进入后台窗口
screen -ls          #列出后台窗口
screen -r [name]    #进入后台窗口
screen -wipe        #清理Dead的后台窗口

在后台窗口中输入exit退出并关闭窗口后,再次输入screen -ls可以看到没有窗口存在:

Crtl+A+D退出窗口后,kill掉screen窗口的进程,可以看到存在dead的窗口,然后输入screen -wipe清理即可:

推荐使用在后台窗口中exit的方式关闭,用完随手就关了,更简单。

使用rclone工具实现华为云OBS至AWS S3数据迁移同步相关推荐

  1. 华为云OBS文件上传下载工具类

    Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...

  2. 华为云OBS文件服务

    华为云OBS文件服务 准备工作 先获取OBS的SK,AK,终端节点.然后创建桶 将以上四个值存放在Nacos中 /*** 取值为所创建的桶名*/@Value("${obs.bucketNam ...

  3. 基于华为云obs的springMVC文件上传下载,简单demo

    使用华为云的obs作为文件服务 使用springdata jpa框架操作数据库 创建springboot项目,添加华为云obs的SDK的maven依赖 <!-- 开启spring配置类 --&g ...

  4. 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享

    基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...

  5. 云存储解决方案-华为云OBS服务的基础使用

    云存储解决方案-华为云OBS 云存储解决方案-华为云OBS 1. 简介 2. 开通OBS 2.1 进入官网 2.2 充值(可以不做) 2.3. 开通OBS 3. OBS快速入门 3.1 创建测试工程, ...

  6. SpringBoot整合华为云OBS

    一.参考项 华为云 OBS(官网): 对象存储服务OBS官网_海量安全高可靠_数据云存储解决方案-华为云 OBS SDK for Java(官网): SDK下载_对象存储服务 OBS_Java_华为云 ...

  7. sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片

    原贴地址:sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片-云社区-华为云 [摘要] 之前发了文章"postman使用post方法向华为云obs桶上传文件和图片&q ...

  8. uniapp 上传图片到华为云obs

    记录一下用uniapp上传图片到华为云obs,之前是先把文件传到我们自己的服务器,然后后端的同事再上传到obs,但是我们公司的带宽太低了,传的太太太太慢了,于是考虑直接让用户上传到obs,不经过我们自 ...

  9. 前端js华为云obs断点续传上传

    前端js华为云obs断点续传上传 断点续传上传就是将待上传的文件分成若干份分别上传,并实时地将每段上传结果统一记录在断点续传记录对象中,仅当所有分段都上传成功时返回上传成功的结果,否则在回调函数中返回 ...

最新文章

  1. 20175223 《Java程序设计》第十一周学习总结
  2. 由创建一个不能被继承的类引发的对象模型的思考
  3. [deviceone开发]-数据绑定示例
  4. 04_关于元数据,ResultSetMetaData对象以及API方法介绍
  5. Sentinel(二十二)之使用Nacos存储规则
  6. JAVA安装报1620错误_java安装错误1620
  7. Hadoop常见问题及解决方法
  8. CSS让图片垂直居中的几种技巧
  9. 2019ccpc河北省赛总结
  10. Redis容量及使用规划(转)
  11. Win7安装IE10或IE11 离线安装注意问题
  12. D3d/opengl texture yuv yuv420p nv12 yv12 等等 显示 以及传入shaderresource
  13. 宝塔面板安装和使用教程(详细)
  14. Sugar BI数据可视化图表标注
  15. vue项目动态域名设置方法
  16. EverEdit安装
  17. mysql order field_mysql 使用order by filed,locate和instr自定义排序
  18. 下面哪个不是python常用的开发工具_Python程序员常用的IDE和其它开发工具
  19. 人生不该困于五环之外(3):3到5年离开五环之外
  20. linux之用户密码忘记后如何修改密码

热门文章

  1. locust(二)配置prometheus和grafana
  2. steam怎么看在哪些计算机上登录过,如何查看好友的steam愿望单?朋友爱玩哪些游戏一看就知道!...
  3. 使用 ESP32 通过 AT 命令与 手机蓝牙进行配对连接
  4. 华为终端云服务牵手Likee,助力其用户与变现双增长
  5. Java 期末试题之GeoJSON
  6. 阿里云ubuntu18.04安装最新版本nodejs
  7. 易语言精益模块json_易语言 史诗级Json处理 烁_Json模块!!!!
  8. 过渡线与渐灭线的构形(机械识图)
  9. 在苹果笔记本如何使用python_怎么在mac上使用python
  10. 跟卖又被“抄家”了,亚马逊新手要怎么做?