rclone 是什么
rclone 是通用的对象存储同步工具:一个二进制、一套命令模型,支持 S3 兼容存储、主流云厂商对象存储、WebDAV、SFTP 与本地目录。它的价值在跨云:不用为每家写 SDK,配好 remote 之后用 copy、sync、check 三个动词就能搬运与校验,配合 --transfers、--bwlimit 控制并发与带宽,适合脚本化批量搬迁。理解 copy 与 sync 的语义差别是安全使用它的前提。
基本信息
| 适用平台 | Linux / Windows / macOS 通用,单文件二进制,无外部依赖 |
|---|---|
| 配置方式 | rclone config 交互式生成 remote,或 rclone config create 命令行写入 |
| 核心命令 | ls/lsjson 列对象、copy 复制、sync 同步、check 校验、delete 删除 |
| 并发控制 | --transfers 并发传输数、--checkers 并发校验数、--progress 显示进度 |
| 限速 | --bwlimit 限制总带宽,避免占满生产出口 |
| S3 兼容接入 | provider=Other 加 endpoint 与 AK/SK,适用于绝大多数 S3 协议对象存储 |
典型使用场景
- 跨云搬运对象数据:把 A 云桶里的历史文件同步到 B 云桶
- 本地导出目录批量上云,替代各厂商专用迁移工具做小规模搬迁
- 定期向异地桶做备份同步,用定时任务加日志实现类备份策略
- 迁移后用 check 做双侧对象数量与哈希比对,产出对账依据
- 运维排查时用 lsjson 导出对象清单,做容量与权限审计
- 配合 --dry-run 规划搬迁范围,先看会传什么、会删什么再执行
配置 S3 兼容远端并搬运
配置 S3 兼容远端并搬运
rclone config create mycos s3 provider=Other \
endpoint=https://cos.ap-guangzhou.myqcloud.com \
access_key_id=AKIDEXAMPLE secret_access_key=EXAMPLEKEY # 建议改用 --config 文件而非命令行传密钥
rclone lsd mycos: # 列出可用桶,验证配置连通
rclone copy /data/export mycos:my-bucket/app-data -P --transfers 16 --bwlimit 200M # 只增不删地复制
rclone check /data/export mycos:my-bucket/app-data --size-only # 校验大小与数量
rclone sync /data/export mycos:my-bucket/app-data --dry-run -v # 先干跑:确认会删除哪些目标端独有对象命令语义与风险
| 命令 | 语义 | 风险提示 |
|---|---|---|
| copy | 把源对象复制到目标,目标端多余对象保留 | 可安全重跑,适合增量追平 |
| sync | 让目标成为源的精确副本,删除目标端独有对象 | 在业务桶上误用会删数据,先 --dry-run 并加备份 |
| move | 复制成功后在源端删除 | 源端删除不可逆,先确认校验通过再删 |
| check | 比对大小与哈希,报告缺失与差异 | 跨厂商哈希算法不同时会报差异,可退化为 --size-only |
| bisync | 双向同步并处理冲突 | 冲突合并规则复杂,生产桶谨慎使用 |
跨厂商比对时哈希算法往往不通用(MD5 与 ETag 的语义差异尤其明显),check 报出差异时先确认是算法口径问题还是数据真的没传全,再加 --size-only 或用 lsjson 按大小与数量对账。
密钥不要写在命令行参数里:它会进入 shell 历史与进程列表;改用 rclone config 或受权限保护的配置文件,并给迁移用的凭据分配最小范围。