rclone

rclone

rsync for cloud storage

支持多种云存储的开源命令行文件传输/同步工具.

支持的云存储类型: Dropbox, Google Drive, Onedrive, Amazon S3, Google Cloud Storage, Nextcloud, FTP, WebDAV...

Quick Start

Installation & Config

下载对应平台的 rclone 程序. 官方提供的 rclone 二进制版本是单可执行文件程序,静态链接了所有库,无任何外部依赖。所以理论上只要是对应架构(x86/arm/misp, 32/64)的平台都可以直接运行可执行文件。

建议将下载的 rclone 可执行文件放到 PATH 路径里,如 /usr/bin/rclone

首先配置 rclone 以获得对应存储平台的用户授权

rclone config

按照提示操作。选择 n 新建一个 remote 配置,输入其 id,选择平台类型等。一般情况下,如果提示输入 App ID / Token 之类的,可以直接留空。对于常见的几个平台,rclone 会使用浏览器打开 平台 OAuth 页面以进行授权。

如果在 VPS 等 headless 环境下部署 rclone,那么授权步骤稍有不同,在 rclone config 的 "Remote config: Use auto config? Say N if you are working on a remote or headless machine" 步骤要输入 n,然后根据提示在另一个具有浏览器的机器(如桌面PC)里操作,具体步骤不同网盘有所不同。比如 onedrive 需要在 PC 机的 terminal 里执行 rclone authorize <platform_id>,在打开的浏览器页面完成授权后,将 terminal 里输出的 JSON 内容({"accessToken": "...",...})复制并粘贴到 VPS 的 terminal 里即可完成授权。而 Google Drive 则是直接在 PC 浏览器打开地址授权并复制结果回 VPS terminal。

Usage

rclone 使用非常简单。直接输入 rclone 查看命令列表; rclone <command> -h 查看具体命令的详细帮助。

列出文件或文件夹(列出文件夹是单独的命令,因为很多 key-object 类型存储平台如S3本质上只有文件概念,文件夹是用文件的 key 名字里的 "/" 分隔符模拟的)

rclone ls <remote_id>:/remote_path
rclone lsd <remote_id>:/remote_path

可以看出在 rclone 里,远程路径的格式是 <remote_id>:/remote_path<remote_id> 是在 config 时配置的。

常用操作

rclone mkdir <remote_id>:/remote_path
rclone delete <remote_id>:/remote_path
rclone rmdir <remote_id>:/remote_path # Remove the path if empty.
rclone rmdirs <remote_id>:/remote_path # Remove empty directories under the path.

Commands

copy

rclone copy source:sourcepath dest:destpath [flags]

dst 是一个目录, 如果不存在会自动创建, src 参数指定的文件会被拷贝到这里。

src 是一个文件或目录, 如果是目录,会拷贝目录里的所有文件(而非此目录本身)。

默认会通过文件大小,修改时间,md5sum 等比对本地和远程文件,dst 上已有的未更改文件不会重新传输。

例如, 本地目录:

folder/
|--file1
|--file2

当前目录 (pwd)为 folder/ 的父目录,执行 rclone copy folder onedrive:/test 之后,远程 onrdrive 文件夹里内容如下:

test/
|--file1
|--file2

copyto

rclone copyto source:path dest:path [flags]

If source:path is a file or directory then it copies it to a file or
directory named dest:path.

This can be used to upload single files to other than their current
name.  If the source is a directory then it acts exactly like the copy
command.

sync

rclone sync source:path dest:path [flags]

将 source:path 单向同步到 dest:path。

  • src:path 需要是一个目录。会同步里面内容而非该目录本身。
  • dst:path 也是一个目录,如果不存在会自动创建。
  • 同步时,会根据文件 size / md5 自动跳过已存在的相同文件。

常用参数

  • --delete-excluded: Delete files on dest excluded from sync

Example:

# 把本地 "Docs" 文件夹里内容同步到远程 "Documents" 文件夹里
rclone sync /root/Docs gdrive:/Backups/Documents

Tips

备份 rclone 配置

rclone 的配置文件是位于用户主目录下的 .config/rclone/rclone.conf 文件,其中内容包含已授权的平台 OAuth access / refresh tokens 等 private credentials。一般可以直接复制这个配置文件到其他机器上使用。

各平台下的 rclone 配置文件路径:

  • Linux: ~/.config/rclone/rclone.conf
  • Windows: %USERPROFILE%\.config\rclone\rclone.conf

使用代理

rclone 支持 HTTP 代理。方法是设置一个 HTTP_PROXY 环境变量值,格式为 http://ip:port

例如,对于 shadowsocks-win 默认配置,设置以下环境变量即可:(shadowsocks-win在同一端口同时提供 HTTP 和 SOCKS5 代理)

HTTP_PROXY=http://localhost:1080


Last update: 2018-10-10 02:20:20 UTC