当前位置: 首页 > news >正文

比rsync更强大的文件同步工具rclone

背景

多个复制,拷贝,同步文件场景,最大规模的是每次几千万规模的小文件需要从云上对象存储中拉取到本地。其他的诸如定期数据备份,单次性数据备份。

rsync是单线程的,开源的mrsync是多线程的,但适用范围没有rclone广

rclone几乎支持市面上所有的S3协议的存储,诸如各家云厂商的对象存储

这里只记录一下常用的参数

实践

首先要生成rclone配置文件

rclone config
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>n # 新建一个远端
Enter name for new remote.
name> remoteoss # 远程连接指定名字
Storage>  # 选择时请确认选择Amazon S3 Compliant Storage Providers开头的选项,具体数字可能会有所改变
provider> # 选择时请确认选择Any other S3 compatible provider(Other),具体数字可能会有所改变
env_auth> 1
access_key_id> aa
secret_access_key> bb
region> 1 
endpoint> # 输入不同云上的对象存储的不同地域的endpoint
location_constraint> # 回车跳过acl> 1 # 权限 # 保存配置即可
# 建议配置配置文件加密 因为里面包含了aksk敏感信息 每次执行rclone命令时要输入配置的配置文件密码

本地复制上云&下云将目录对调即可

rclone copy --s3-use-multipart-etag false -vv --no-update-modtime --transfers 64 --s3-no-check-bucket --no-traverse --ignore-checksum  --no-check-dest --ignore-case-sync \
--max-backlog 100000 --inplace --ignore-size --buffer-size 0 --s3-chunk-size 50M --s3-upload-cutoff 200M /data1 remoteoss:dir1/dir2/data1 > rclone_data1_241108.log 2>&1

本地不同目录间复制

rclone copy --s3-use-multipart-etag false -v --no-update-modtime --transfers 128 --s3-no-check-bucket --no-traverse --ignore-checksum  --ignore-case-sync \
--max-backlog 100000 --inplace --ignore-size --buffer-size 0 --s3-chunk-size 50M --s3-upload-cutoff 200M /data2/xx  /home/xx/data2 > rclone_xx_241118.log 2>&1

删除目录及其子目录和文件

rclone purge /mnt/data1 --transfers 32 --max-backlog 100000 --ignore-size --no-check-dest
参数说明
–s3-use-multipart-etagfalse 禁用 S3 使用多部分上传时的 ETag 校验
–no-update-modtime禁止在文件复制时更新目标文件的修改时间
–transfers设置同时进行的文件传输数为 64
–s3-no-check-bucket不检查S3 存储桶是否存在
–no-traverse禁止在上传时遍历目标目录
–ignore-checksum忽略文件的校验和比较
–no-check-dest禁用目标文件的检查
–ignore-case-sync忽略文件名大小写的不同
–max-backlog设置上传队列的最大等待文件数量为 100000
–inplace该选项表示如果目标文件已存在且内容相同,rclone 会直接覆盖该文件而不是先删除再重新上传
–ignore-size忽略文件大小的检查
–buffer-size设置缓存大小为 0 字节减少内存占用
–s3-chunk-size更改默认分片的大小,提高带宽利用率
–s3-upload-cutoff文件上传切割的阈值当文件大于200MB进行分片

建议将日志等级-vv 调整为一个v,在执行千万级别文件复制时,日志文件高达20G。当然也可以通过脚本实现logrotate日志切割
基本上使用这些参数可以更好的利用现有的40g专线带宽,ib网络,U2硬盘 等资源。

reference
更多参数诸如限制带宽等,可以参阅文档
https://rclone.org/docs/
https://github.com/rclone/rclone

http://www.lryc.cn/news/486905.html

相关文章:

  • 《业务流程--穿越从概念到实践的丛林》读后感一:什么是业务流程
  • 解决docker mysql命令行无法输入中文
  • 基于Java Springboot城市公交运营管理系统
  • Lc70--319.两个数组的交集(二分查找)---Java版
  • 亿咖通科技应邀出席微软汽车行业智享会,分享ECARX AutoGPT全新实践
  • Python教程:运算符重载
  • AWTK VSCode 实时预览插件端口冲突的解决办法
  • 【MySQL系列】深入理解MySQL中的存储、排序字符集
  • RPC-健康检测机制
  • 关于Java处理Excel常规列表记录,并入库的操作
  • 深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
  • 计算机网络安全 —— 对称加密算法 DES (一)
  • 5. ARM_指令集
  • Jenkins的pipeline Script的 每个组件的详细讲解
  • Tomcat 和 Netty 的区别及应用场景分析
  • 6.C操作符详解,深入探索操作符与字符串处理
  • 生数科技发布 Vidu 1.5 新版本,引领视频大模型新潮流
  • CentOS 7 aarch64停止更新后安装gcc8 —— 筑梦之路
  • WPF下 DataGrid加入序号列
  • iOS UI 自动化 手势右滑退出当前页面
  • 《MySQL 实战教程:从零开始到高手进阶》
  • 第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞
  • 应用系统开发(12) Zync中实现数字相敏检波
  • 栈Stack和队列Queue
  • uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点
  • Percona XtraBackup备份docker版本mysql 5.7
  • C++:关联式容器的介绍及map与set的使用
  • 一文说清:Linux下C++静态库的封装和调用
  • 【Java 学习】数据类型、变量、运算符、条件控制语句
  • 【软考】系统架构设计师-数据库设计基础