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

背景

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

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

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

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

实践

首先要生成rclone配置文件

bash 复制代码
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命令时要输入配置的配置文件密码

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

bash 复制代码
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

本地不同目录间复制

bash 复制代码
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

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

bash 复制代码
rclone purge /mnt/data1 --transfers 32 --max-backlog 100000 --ignore-size --no-check-dest
参数 说明
--s3-use-multipart-etag false 禁用 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

相关推荐
3D_DLW14 天前
Ubuntu 20.04安装rsync 3.2.7
linux·运维·服务器·ubuntu·rsync
Hu_O&M3 个月前
rsync+inotify
linux·运维·rsync·inotify·rsync+inotify
lihongbao803 个月前
rclone实现数据迁移、备份还原
minio·rclone
luck_lin4 个月前
centos安装rclone挂载alist
centos·rclone·webdav
年薪丰厚7 个月前
seRsync + Rsync 实时同步
linux·运维·服务器·rsync·实时同步
未知百分百7 个月前
未授权访问:Rsync 未授权访问漏洞
网络·安全·web安全·网络安全·文件上传·rsync·未授权访问
krb___9 个月前
rsync+inotify-tools文件传输
linux·运维·rsync·文件传输·inotify-tools
嗯嗯**9 个月前
Shell常用脚本:文件或目录一键同步到多台服务器
linux·运维·rsync·shell脚本·批量·文件同步·xsync