rclone 是命令行工具,用于本地与云存储(Google Drive、S3、OneDrive 等)之间的数据同步和迁移,支持 40+ 存储服务。

基础概念

  • Remote(远程存储):配置好的云存储,如 gdrive:s3:
  • 语法rclone [选项] 命令 源路径 目标路径

配置远程存储

rclone config

配置流程详解

交互配置界面操作步骤:

  1. 输入 n 新建 remote
  2. 输入 remote 名称(如 gdrives3onedrive
  3. 选择存储类型编号(输入数字或名称)
  4. 按提示填写认证参数
  5. 确认配置(y 确认,e 编辑,d 删除)
  6. 输入 q 退出配置菜单

常见存储类型配置示例

Google Drive

Storage> drive               # 选择 Google Drive
client_id>                   # 留空使用默认,或填自定义 OAuth ID
client_secret>               # 留空使用默认,或填自定义 OAuth Secret
scope> 1                     # 选择权限范围:
                             # 1 = Files only (推荐)
                             # 2 = Files and folders read-only
                             # 3 = Files and folders read/write
root_folder_id>              # 留空,或指定特定文件夹 ID
service_account_file>        # 留空,普通用户无需
advanced_settings> n         # 通常跳过高级设置
use_auto_config> y           # 自动配置授权

授权流程:终端显示链接 → 打开浏览器登录 Google → 获取验证码 → 输入到终端

AWS S3

Storage> s3
provider> 1                  # 选择 AWS 或其他兼容服务:
                             # 1 = AWS
                             # 2 = Ceph
                             # 3 = Minio
                             # 4 = 其他
env_auth> true               # 从环境变量读取凭证(推荐)
                             # AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
access_key_id>               # 若 env_auth=false,直接输入
secret_access_key>           # 若 env_auth=false,直接输入
region> 1                    # 选择区域或输入区域代码
                             # 如 us-east-1, ap-northeast-1
endpoint>                    # AWS 留空,其他服务填写地址
acl> private                 # 对象访问权限
advanced_settings> n         # 跳过高级设置

OneDrive

Storage> onedrive
client_id>                   # 留空使用默认
client_secret>               # 留空使用默认
region> global               # 选择区域:global 或 cn(中国版)
advanced_settings> n
use_auto_config> y           # 自动授权
drive_type> personal         # 选择类型:
                             # personal = 个人版
                             # business = 企业版

配置文件管理

配置文件位置

系统路径
Linux/macOS~/.config/rclone/rclone.conf
Windows%APPDATA%\rclone\rclone.conf

配置文件结构

[gdrive]
type = drive
scope = drive
token = {"access_token":"xxx","refresh_token":"xxx","expiry":"2025-01-01T00:00:00Z"}
 
[s3-backup]
type = s3
provider = AWS
env_auth = true
region = us-west-2
acl = private

使用自定义配置文件

rclone --config /path/to/config.conf lsd remote:path

环境变量覆盖

# 指定配置文件路径
export RCLONE_CONFIG=/custom/path/rclone.conf
 
# 直接传递凭证(敏感信息)
export RCLONE_CONFIG_GDRIVE_TOKEN=xxx

高级配置选项

加密配置文件

# 配置加密密码
rclone config
# 选择 remote → 输入 password 参数
 
# 或使用命令行
rclone obscure mypassword  # 生成加密后的密码字符串

将加密后的字符串写入配置文件的 password 字段。

服务账号配置(适用于企业/自动化场景):

# Google Drive 服务账号
service_account_file = /path/to/service-account.json
 
# AWS IAM 角色(EC2 上运行)
env_auth = true  # 自动获取实例附加的角色凭证

配置维护命令

# 列出所有 remote
rclone listremotes
 
# 查看 remote 详细配置
rclone config show gdrive
 
# 更新配置(交互式)
rclone config update gdrive
 
# 删除 remote
rclone config delete old-remote
 
# 编辑配置文件
rclone config edit

配置问题排查

重新授权

# token 过期时重新获取
rclone config reconnect gdrive:

配置文件权限

# 配置文件包含敏感凭证,应限制权限
chmod 600 ~/.config/rclone/rclone.conf

测试配置

# 验证配置是否正常
rclone lsd remote:    # 列出远程目录
rclone about remote:  # 查看存储空间信息

核心命令

复制文件

# 本地 → 远程
rclone copy /local mygdrive:backup
 
# 远程 → 本地
rclone copy mygdrive:photos ./local
 
# 远程 → 远程
rclone copy gdrive:data s3:backup

常用选项:-P(进度条)、-v(详细日志)、--ignore-existing(跳过已存在)

同步文件

rclone sync /data mygdrive:backup -P

注意:sync 会使目标与源完全一致,会删除目标多余文件。

移动文件

rclone move mygdrive:temp ./local_temp -P

列出文件

rclone ls mygdrive:docs    # 列出文件(含大小)
rclone lsd mygdrive:docs   # 仅列出目录

检查差异

rclone check /local mygdrive:backup

删除文件

rclone delete mygdrive:old_files  # 删除文件,保留目录
rclone purge mygdrive:folder      # 彻底删除

其他命令

rclone mkdir mygdrive:new_folder  # 创建目录
rclone about mygdrive:            # 查看空间信息

全局选项

选项作用
-P显示进度
-n模拟操作(不实际执行)
--bwlimit 1M限制速度
--transfers 8并发传输数
--exclude "*.log"排除文件
--include "*.txt"包含文件

示例场景

备份到云存储

rclone sync -P /home/photos myonedrive:backup/photos

限速下载

rclone copy -P --bwlimit 5M mys3:large_files ./downloads

模拟同步

rclone sync -n /local mygdrive:data  # 先模拟确认