rclone远程控制

rclone远程控制

使用 API 远程控制 rclone

如果运行 rclone 时使用了 --rc 标记,那么它会启动一个 HTTP 服务器。 服务器,使用其 API 远程控制 rclone。

你可以使用 rc 命令访问 API 或 直接使用 HTTP

如果你只想运行远程控制,请参阅 rcd 命令。

支持的参数

–rc

启动 http 服务器监听远程请求的标志。

–rc-addr=IP

绑定服务器的 IPaddress:Port 或 :Port。 (默认为 “localhost:5572”)。

–rc-cert=KEY

SSL PEM 密钥(证书和 CA 证书的连接)。

–rc-client-ca=PATH

用于验证客户端的客户端证书授权。

–rc-htpasswd=PATH

htpasswd 文件 - 如果未提供,则不进行身份验证。

–rc-key=PATH

TLS PEM 私钥文件。

–rc-max-header-bytes=VALUE

请求头的最大大小(默认为 4096)。

–rc-min-tls-version=VALUE

可接受的最小 TLS 版本。 有效值为 “tls1.0”、 “tls1.1”、“tls1.2 “和 “tls1.3”(默认值为 “tls1.0”)。

–rc-user=VALUE

用于身份验证的用户名。

–rc-pass=VALUE

用于身份验证的密码。

–rc-realm=VALUE

身份验证域(默认为 “rclone”)。

–rc-server-read-timeout=DURATION

服务器读取数据的超时(默认为 1h0m0s)。

–rc-server-write-timeout=DURATION

服务器写入数据的超时(默认为 1h0m0s)。

–rc-serve

启用通过 HTTP 接口为远程对象提供服务。 这 这意味着对象默认可在 http://127.0.0.1:5572/ 访问、 所以你可以浏览 http://127.0.0.1:5572/ 或 http://127.0.0.1:5572/* 查看远程对象列表。 可以使用以下语法从 远程服务器请求对象,语法如下 http://127.0.0.1:5572/[remote:path]/path/to/object。

默认关闭。

–rc-serve-no-modtime

设置此标记可跳过读取修改时间(可加快速度)。

默认关闭。

–rc-files /path/to/directory

要在 HTTP 服务器上提供的本地文件的路径。

如果设置了该标志,rclone 将为该目录下的文件提供服务。 它 也会在网页浏览器中打开根目录。 这是为了 为 rclone 功能实现基于浏览器的图形用户界面。

如果设置了”–rc-user “或”–rc-pass”,那么打开的 URL 将在 “URL “中显示授权。 授权将以 http://user:pass@localhost/ 样式出现在 URL 中。 样式中的授权。

默认关闭。

–rc-enable-metrics

/metrics启用与 OpenMetrics/Prometheus 兼容的端点。 如果需要对指标进行更多控制(例如在不同的端口上运行或使用不同的授权),则可使用 --metrics-* 标记启用端点。

默认关闭。

–rc-web-gui

设置此标志可在与 rclone 相同的端口上提供默认 web gui。

默认关闭。

–rc-allow-origin

设置 rc 请求允许的 Access-Control-Allow-Origin 地址。

如果 rclone 运行在与 web-gui 不同的 IP 上,可与 –rc-web-gui 一起使用。

默认为运行 rc 的 IP 地址。

–rc-web-fetch-url

设置获取 rclone-web-gui 文件的 URL。

默认为 https://api.github.com/repos/rclone/rclone-webui-react/releases/latest

–rc-web-gui-update

设置此标志以从 rc-web-fetch-url 检查并更新 rclone-webui-react。

默认关闭。

–rc-web-gui-force-update

设置此标记以强制更新 rc-web-fetch-url 中的 rclone-webui-react。

默认关闭。

–rc-web-gui-no-open-browser

设置此标记以禁止在使用 web-gui 时自动打开浏览器。

默认关闭。

–rc-job-expire-duration=DURATION

使超过 DURATION(默认为 60s)的已完成异步任务失效。

–rc-job-expire-interval=DURATION

检查已过期异步任务的间隔时间(默认为 10 秒)。

–rc-no-auth

默认情况下,rclone 会要求在 rc 接口上设置授权,才能使用访问任何 rclone 远程的方法。 例如,“operations/list “会被拒绝,因为它涉及创建一个 和 sync/copy 一样。

如果设置了该选项,则使用这些方法无需服务器授权。 使用这些方法。 另一种方法是使用 --rc-user 和 用户名和密码,并在请求中使用这些凭证。

默认关闭。

–rc-baseurl

URL 的前缀。

默认为根

–rc-template

用户指定的模板。

通过 rclone rc 命令访问远程控制

Rclone 本身在其 `rclone rc “命令中实现了远程控制协议。

你可以这样使用它

$ rclone rc rc/noop param1=one param2=two
{
	"param1": "one",
	"param2": "two"
}

如果远程运行的 URL 与默认的 http://localhost:5572/",请使用 --url 选项指定:

$ rclone rc --url http://some.remote:1234/ rc/noop

或者,如果远程监听的是 Unix 套接字,则使用 --unix-socket 选项 选项:

$ rclone rc --unix-socket /tmp/rclone.sock rc/noop

不带任何命令,单独运行 rclone rc 查看已安装的远程控制命令的帮助。 已安装的远程控制命令的帮助。 请注意,这还需要连接到 远程服务器。

JSON 输入

rclone rc 还支持一个 --json 标志,可用于发送更复杂的输入参数。 更复杂的输入参数。

$ rclone rc --json '{ "p1": [1, "2",null,4], "p2": { "a":1, "b":2 }' rc/ooper }' rc/noop
{
	"p1": [
		1,
		"2",
		null,
		4
	],
	"p2": {
		"a": 1,
		"b": 2
	}
}

如果传递的参数是一个对象,则可以以 字符串的形式传递,而不是使用 --json 标志,这样可以简化命令行。 命令行。

rclone rc operations/list fs=/tmp remote=test opt='{"showHash": true}'

而不是

rclone rc operations/list --json '{"fs": "/tmp", "remote": "test", "opt": {"showHash": true}}'

特殊参数

rc 界面支持一些特殊参数,这些参数适用于 所有*命令。 这些参数以 _ 开头,以示不同。

使用 _async = true 运行异步作业

每个 rc 调用都被归类为一个作业,并分配有自己的 id。 默认情况下 作业会在创建后立即执行或同步执行。

如果向 rc 调用提供的 _async 值为 true,那么它将 将立即返回作业 ID,任务将在后台运行。 后台运行。 调用 job/status 可以获取后台任务的信息。 后台任务的信息。 在作业结束后,最多可查询 1 分钟。 完成后的 1 分钟内。

建议对可能长时间运行的作业(如 sync/syncsync/copysync/move)进行查询、 同步/复制”、“同步/移动”、“操作/清理 “等工作时使用”_async 标志运行,以避免 HTTP 请求和 响应超时的潜在问题。

使用 _async 标志启动作业:

$ rclone rc --json '{ "p1": [1, "2",null,4], "p2": { "a":1, "b":2 }, "_async": true }' rc/noop
{
	"jobid": 2
}

查询状态,查看任务是否已完成。 有关这些返回参数 有关这些返回参数含义的更多信息,请参阅 job/status 调用。

$ rclone rc --json '{ "jobid":2 }' job/status
{
	"duration": 0.000124163,
	"endTime": "2018-10-27T11:38:07.911245881+01:00",
	"error": "",
	"finished": true,
	"id": 2,
	"output": {
		"_async": true,
		"p1": [
			1,
			"2",
			null,
			4
		],
		"p2": {
			"a": 1,
			"b": 2
		}
	},
	"startTime": "2018-10-27T11:38:07.911121728+01:00",
	"success": true
}

job/list 可用于显示正在运行或最近完成的作业

$ rclone rc job/list
{
	"jobids": [
		2
	]
}

使用 _config 设置配置标志

如果您希望只在 rc 调用期间设置配置(相当于全局标志),那么请输入 _config参数。 参数。

该参数的格式应与以下方式返回的 config 密钥相同 options/get返回的 config 键的格式相同。

例如,如果希望使用 --checksum 参数运行同步,则应将该参数传递给options/get。 参数运行同步,则应在 JSON blob 中传递此参数。

"_config":{"CheckSum": true}

如果使用 “rclone rc”,可将此参数传递为

rclone rc sync/sync ... _config='{"CheckSum":true}'"。

任何未设置的配置参数都将继承全局默认值。 默认值。

请注意,可以将某些值设置为字符串或整数–参见 数据类型。 更多信息请参阅 数据类型。 下面是一个例子 以字符串或整数格式设置相当于 --buffer-size 的值。

"_config":{"BufferSize": "42M"}
"_config":{"BufferSize": 44040192}

如果您想检查”_config “赋值是否正常,那么 调用 options/local 将显示设置的值。

使用 _filter 设置过滤器标志

如果您只想在 rc 调用期间设置过滤器,那么 输入 _filter 参数。

该参数的格式应与以下方式返回的 filter 键相同 选项/get 返回的 filter 键的格式相同。

例如,如果您希望使用以下标志运行同步

-max-size 1M -max-age 42s -include "a" -include "b"

在 JSON blob 中传递此参数。

"_filter":{"MaxSize":"1M", "IncludeRule":["a","b"], "MaxAge":"42s"}

如果使用 “rclone rc”,则可将其传递为

rclone rc ... _filter='{"MaxSize":"1M", "IncludeRule":["a","b"], "MaxAge":"42s"}'

任何未设置的过滤器参数都将继承全局默认值 通过命令行标志或环境变量设置的全局默认值。

请注意,可以将某些值设置为字符串或整数–参见 数据类型。 更多信息请参阅 数据类型。 下面是一个例子 以字符串或整数格式设置相当于 --buffer-size 的值。

"_filter":{"MinSize": "42M"}
"_filter":{"MinSize": 44040192}

如果您想检查”_filter “赋值是否正常,那么 调用 options/local 将显示设置的值。

使用 _group = value 将操作分配给组

每个 rc 调用都有自己的统计组,用于跟踪其指标。 默认情况下 分组是由前缀 job/ 和作业 id 组成的复合组名完成的。 作业的 id 进行分组,如 job/1

如果 _group有一个值,则该请求的统计信息将在该值下分组。 值。 这允许调用者以自己的名称对统计信息进行分组。

可以通过向 core/stats 传递 group 来访问特定组的统计信息:

$ rclone rc --json '{ "group": "job/1" }' core/stats
{
	"speed": 12345
	...
}

数据类型

当应用程序接口返回类型时,这些类型大多是直接的 整数、字符串或布尔类型。

不过,options/get 调用返回、options/set调用以及 vfsOpt”、“mountOpt “和”_config “参数。

  • 持续时间”–以纳秒为单位返回整数持续时间。 纳秒。 它们可以设置为整数,也可以用 时间字符串,例如 “5 秒”。 更多信息请参阅 选项部分。 更多信息。
  • 大小”–以整数字节的形式返回。 它们可以 可以设置为整数,也可以设置为大小后缀字符串、 例如 “10M”。 更多信息请参阅 选项部分
  • 枚举类型(如 CutoffModeDumpFlagsLogLevel、 VfsCacheMode` - 这些将以整数形式返回,也可设置为整数。 但更方便的是,它们可以设置为字符串,例如 CutoffMode “为 “HARD”,“LogLevel “为 “DEBUG”。
  • BandwidthSpec` - 将以字符串形式设置和返回,例如 “1M”.

选项块

调用 options/info(用于主配置)和 config/providers(用于后端配置)。 可用于获取 rclone 配置选项的信息。 这可 可用于构建用户界面,以显示和设置任何 rclone 选项的用户界面。

这些选项由 Option 块数组组成。 其格式如下 格式。 每个区块描述一个选项。

字段 类型 可选 描述
Name string N 在蛇行模式中的选项名称
FieldName string N RC 中使用的字段名称 - 如果为空,则使用 “名称”。
Help string N 帮助,以单行上的一句话开始
Groups string Y 该选项所属的组 - 用逗号分隔的选项分类字符串
Provider string Y 设置为对提供商进行筛选
Default any N 默认值,如果已设置(且未设置为 nil 或”"),则 Required 不执行任何操作
Value any N 由标志设置的值
Examples Examples Y 可从列表中选择的预定义值(多选选项)
ShortOpt string Y 的简短命令行选项
Hide Visibility N 如果不为零,则从配置器或命令行中隐藏该选项
Required bool N 该选项为必填项,意味着值不能为空,除非有默认值
IsPassword bool N 如果选项是密码,则设置
NoPrefix bool N 设置该选项是否不应使用后台前缀
Advanced bool N 如果是高级配置选项,则设置
Exclusive bool N 如果答案只能是示例之一,则设置该参数(除非设置了 “必填 “或 “默认”,否则允许使用空字符串)。
Sensitive bool N 设置在使用 rclone config redacted 时是否要编辑此选项

例如,”–log-level “标志就是一个例子。 请注意,选项的 选项的 Name 变成命令行标志,而 _ 则被替换为 替换为 -

{
    "Advanced": false,
    "Default": 5,
    "DefaultStr": "NOTICE",
    "Examples": [
        {
            "Help": "",
            "Value": "EMERGENCY"
        },
        {
            "Help": "",
            "Value": "ALERT"
        },
        ...
    ],
    "Exclusive": true,
    "FieldName": "LogLevel",
    "Groups": "Logging",
    "Help": "Log level DEBUG|INFO|NOTICE|ERROR",
    "Hide": 0,
    "IsPassword": false,
    "Name": "log_level",
    "NoPrefix": true,
    "Required": true,
    "Sensitive": false,
    "Type": "LogLevel",
    "Value": null,
    "ValueStr": "NOTICE"
},

请注意,“帮助 “可以是多行,中间用”/n “隔开。 第一行 第一行总是一个简短的句子,这也是 运行 rclone help flags 时显示的句子。

指定工作的远程服务器

根据使用的命令,可以使用 fs=srcFs=dstFs= 参数指定远程。 参数指定远程服务器,具体取决于使用的命令。

参数可以是字符串,与 rclone 的其他参数一样,例如 s3:bucket/path “或”:sftp:/my/dir”。 也可以指定为 JSON blob。

如果指定的是 JSON blob,它应该是一个将字符串映射为 字符串的对象。 这些值将用于配置远程。 有 3 个特殊值:

  • type - 设置为 “type “可指定一个名为”:type: “的远程设备
  • _name - 设置为 “name”,以指定一个名为 “name:`“的远程设备
  • _root - 设置远程根目录 - 可以为空

通常应设置 _nametype 中的一个。 如果希望使用 local 后端,则应将 type设置为local`。 如果未指定 则默认为远程根目录。

例如,下面的 JSON 相当于 remote:/tmp

{
    "_name": "remote",
    "_root": "/tmp" }
}

这相当于:sftp,host='example.com':/tmp

{
    "type": "sftp",
    "host": "example.com",
    "_root": "/tmp" }
}

这相当于 /tmp/dir

{
    type = "local",
    _root = "/tmp/dir"
}

支持的命令

backend/command: 运行后台命令。 {##backend-command}

该命令需要以下参数:

  • command - 包含命令名称的字符串
  • fs–远程名称字符串,如 “drive:”
  • arg - 后端命令的参数列表
  • opt - 字符串到选项字符串的映射

返回值

  • result - 后台命令的结果

例如

rclone rc backend/command command=noop fs=. -o echo=yes -o blue -a path1 -a path2

返回

{
	"result": {
		"arg": [
			"path1",
			"path2"
		],
		"name": "noop",
		"opt": {
			"blue": "",
			"echo": "yes"
		}
	}
}

请注意,这直接等同于使用以下 “后台 “命令 命令:

rclone backend noop . -o echo=yes -o blue path1 path2

注意参数前必须有”-a “标记

更多信息,请参阅 backend 命令。

Authentication is required for this call.

cache/expire: 从缓存中清除远程

从缓存后端清除远程文件。 支持目录或文件。 参数:

  • remote = 远端路径(必填)
  • withData = true/false,用于同时删除缓存数据(块)(可选)

例如

rclone rc cache/expire remote=path/to/sub/folder/
rclone rc cache/expire remote=/ withData=true

cache/fetch: 获取文件块

确保指定的文件块缓存在磁盘上。

chunks= 参数指定要检查的文件块。 它使用一个逗号分隔的数组片段索引列表。 片段索引类似于 Python 的片段:start[:end]

start 是以 0 为单位的文件块编号,从文件开头算起。 end 是基于 0 的块编号,从文件开头开始,到获取内容为止。 的分块编号。 这两个值都可以是负数,在这种情况下,它们从文件后部开始计算。 在这种情况下,它们从文件的后面开始计算。 值”-5: “代表文件的最后 5 个块。

一些有效的例子如下 “:5,-5:” -> 前五块和后五块 “0,-2” -> 第一个和倒数第二个数据块 “0:10” -> 前十个数据块

任何关键字以 “file “开头的参数都可用于 指定要获取的文件,例如

rclone rc cache/fetch chunks=0 file=hello file2=home/goodbye

文件名将在远程加密时自动加密。 时,文件名会自动加密。

cache/stats: 获取缓存统计数据 {##cache-stats}

显示远程缓存的统计数据。

config/create:创建远程配置。

需要以下参数:

  • name - 远程名称
  • parameters - “key”: “} 对
  • type - 新远程设备的类型
  • opt - 控制配置的选项字典
    • obscure - 声明密码是明码,需要隐藏
    • noObscure - 声明密码已被遮盖,无需再遮盖
    • nonInteractive - 不与用户交互,返回问题
    • continue - 有答案后继续配置过程
    • all - 询问所有配置问题,而不仅仅是配置后问题
    • state - 重启时的状态 - 与 continue 一起使用
    • result - 重新启动的结果 - 与 continue 一起使用

更多相关信息,请参阅 config create 命令。

此调用需要进行身份验证。

config/delete: 删除配置文件中的远程。 {##config-delete}

参数:

  • name - 要删除的远程设备名称

有关上述操作的更多信息,请参阅 config delete 命令。

此调用需要进行身份验证。

config/dump: 转储配置文件。 {##config-dump}

返回一个 JSON 对象:

  • 键:值

其中 key 是远程名称,value 是配置参数。

更多相关信息,请参阅 config dump 命令。

此调用需要进行身份验证。

config/get: 获取配置文件中的远程信息。 {##config-get} 配置

参数:

  • name - 要获取的远程设备名称

更多相关信息,请参阅 config dump 命令。

此调用需要身份验证

config/listremotes: 列出配置文件中和环境变量中定义的远程。 {#config-listremotes}

返回

  • remotes - 远程名称数组

更多相关信息,请参阅 listremotes 命令。

此调用需要身份验证

config/password: 远程配置的密码。 {#config-password} 配置密码

它需要以下参数:

  • name - 远端名称
  • parameters - “key”: “value” } 对的映射

更多相关信息,请参阅 config password 命令。

此调用需要进行身份验证。

config/paths: 读取配置文件路径和其他重要路径。

返回一个 JSON 对象,其中包含以下关键字:

  • config:配置文件路径
  • cache:缓存目录根目录路径
  • temp:临时目录根目录路径

特征

{
    "cache": "/home/USER/.cache/rclone"、
    "config": "/home/USER/.rclone.conf"、
    "temp": "/tmp
}

有关上述内容的更多信息,请参阅 config paths 命令。

此调用需要进行身份验证。

config/providers: 显示如何在配置文件中配置提供程序。

返回一个 JSON 对象:

  • providers - 对象数组

请参阅 config providers命令 获取更多相关信息。

请注意,选项块的格式与 “options/info “命令返回的格式相同。 “options/info “返回的格式相同。 它们在 选项块 部分对其进行了描述。

此调用需要进行身份验证。

config/setpath: 设置配置文件的路径

参数:

  • path:要使用的配置文件的路径

此调用需要进行身份验证。

config/update:更新远程配置。 {配置更新}

它需要以下参数:

  • name - 远端名称
  • parameters - “key”: “value” (值)对的映射
  • opt - 控制配置的选项字典
    • obscure - 声明密码是明码,需要隐藏
    • noObscure - 声明密码已被遮盖,无需再遮盖
    • nonInteractive - 不与用户交互,返回问题
    • continue - 有答案后继续配置过程
    • all - 询问所有配置问题,而不仅仅是配置后问题
    • state - 重启时的状态 - 与 continue 一起使用
    • result - 重启的结果 - 与 continue 一起使用

更多相关信息,请参阅 config update 命令。

此调用需要身份验证。

core/bwlimit:设置带宽限制。 {##core-bwlimit}

这将带宽限制设置为传入的字符串。 这应该是 单个带宽限制条目或一对上传:下载带宽。

例如

rclone rc core/bwlimit rate=off
{
    "bytesPerSecond": -1,
    "bytesPerSecondTx": -1,
    "bytesPerSecondRx": -1,
    "rate": "off"
}
rclone rc core/bwlimit rate=1M
{
    "bytesPerSecond": 1048576,
    "bytesPerSecondTx": 1048576,
    "bytesPerSecondRx": 1048576,
    "rate": "1M"
}
rclone rc core/bwlimit rate=1M:100k
{
    "bytesPerSecond": 1048576,
    "bytesPerSecondTx": 1048576,
    "bytesPerSecondRx": 131072,
    "rate": "1M"
}

如果未提供速率参数,则查询带宽

rclone rc core/bwlimit
{
    "bytesPerSecond": 1048576,
    "bytesPerSecondTx": 1048576,
    "bytesPerSecondRx": 1048576,
    "rate": "1M"
}

参数的格式与传递给 –bwlimit 的格式完全相同。 参数的格式完全相同,只是只能指定一个带宽。

无论哪种情况,“rate”(速率)都将以人类可读字符串的形式返回,而 “字节每秒 “以数字形式返回。

core/command: 在 rc 上运行 rclone 终端命令。 {##core-command}

该命令需要以下参数:

  • command - 包含命令名称的字符串。
  • arg - 后台命令的参数列表。
  • opt - 从字符串到选项字符串的映射。
  • returnType - 返回类型(“COMBINED_OUTPUT”、“STREAM”、“STREAM_ONLY_STDOUT”、“STREAM_ONLY_STDERR”)之一。
    • 如果未设置,默认为 “COMBINED_OUTPUT”。
    • STREAM 返回类型会将输出写入 HTTP 消息的正文。
    • COMBINED_OUTPUT 将把输出写入 “result “参数。

返回:

  • result - 来自后台命令的结果。
    • 仅在使用 returnType “COMBINED_OUTPUT” 时设置。
  • error - 如果 rclone 退出时出现错误代码,则设置此值。
  • returnType - “COMBINED_OUTPUT”、“STREAM”、“STREAM_ONLY_STDOUT”、“STREAM_ONLY_STDERR “中的一种。

示例

rclone rc core/command command=ls -a mydrive:/ -o max-depth=1
rclone rc core/command -a ls -a mydrive:/ -o max-depth=1

返回:

{
	"error": false,
	"result": "<Raw command line output>"
}

OR
{
	"error": true,
	"result": "<Raw command line output>"
}

此传入需要进行身份验证。

core/du: 返回本地连接磁盘的磁盘使用情况。

返回以 dir 传入的本地目录的磁盘使用情况。

如果没有传入目录,则默认为 指向的目录。

  • dir - 字符串(可选)

返回:

{
	"dir": "/",
	"info": {
		"Available": 361769115648,
		"Free": 361785892864,
		"Total": 982141468672
	}
}

core/gc: 运行垃圾回收。

这将告诉 go 运行时执行一次垃圾回收。 正常情况下 但在调试内存问题时可能很有用。 内存问题。

core/group-list: 返回统计列表。 {##core-group-list}

返回当前内存中的统计组列表。

返回以下值:

{
	"groups":  an array of group names:
		[
			"group1",
			"group2",
			...
		]
}

core/memstats: 返回内存统计数据

返回运行中程序的内存统计信息。 值的含义 在 go 文档中有解释: https://golang.org/pkg/runtime/#MemStats

对大多数人来说,最有趣的值是

  • HeapAlloc - 这是 rclone 实际使用的内存量
  • HeapSys - 这是 rclone 从操作系统获取的内存量
  • Sys - 这是从操作系统申请的内存总量
    • 这是虚拟内存,因此可能包括未使用的内存

core/obscure: 遮盖传入的字符串。

传递一个清晰字符串,rclone 会在配置文件中将其隐藏:

  • clear - string

返回:

  • obscured - string

core/pid: 返回当前进程的 PID

返回当前进程的 PID。 用于停止 rclone 进程。

core/quit: 终止应用程序。 {##core-quit} (可选

(可选)传递用于终止应用程序的退出代码:

  • exitCode - int

core/stats: 返回当前传输的统计信息。

返回所有可用的统计信息:

rclone rc core/stats

如果未提供组,则将返回所有组的统计总和。 返回。

参数

  • group - 统计组名称(字符串)

返回以下值:

{
	"bytes":自组群开始以来传输的总字节数,
	"checks":已检查的文件数,
	"deletes":删除的文件数,
	"elapsedTime":rclone 启动后的时间,以浮点秒为单位,
	"errors":错误数,
	"eta":小组完成前的预计时间(以秒为单位),
	"fatalError":布尔值,表示是否至少发生过一次致命错误,
	"lastError":最后一个错误字符串,
	"renames":已重命名的文件数,
	"retryError":布尔值,显示是否至少发生过一次非重试错误,
        "serverSideCopies":已完成的服务器端副本数,
        "serverSideCopyBytes":服务器端复制的字节数,
        "serverSideMoves":已完成的服务器端移动次数,
        "serverSideMoveBytes":服务器端移动的字节数,
	"speed":自组群开始以来的平均速度,单位为字节/秒,
	"totalBytes":组中的字节总数,
	"totalChecks":组中的检查总数,
	"totalTransfers":组内传输总数,
	"transferTime":运行任务所花费的总时间,
	"transfer":传输的文件数,
	"transferring":当前活动文件传输数组:



		[
			{
				"bytes":该文件传输的总字节数,
				"eta":文件传输完成前的预计时间(以秒为单位
				"name":文件名,
				"percentage":文件传输的进度,以百分比为单位,
				"speed":整个传输过程的平均速度,单位为字节/秒,
				"speedAvg":当前速度(以每秒字节数为单位)的指数加权移动平均值,
				"size":文件大小,以字节为单位
			}
		],
	"checking":当前活动文件检查名称的数组
		[]
}

转移”、“检查 “和 “lastError “的值只有在有数据的情况下才分配。 如果无法确定 eta,则 “eta “值为空。

core/stats-delete: 删除统计组。 {##core-stats-delete}

删除整个统计组。

参数

  • group - 统计组名称(字符串)

core/stats-reset: 重置统计信息。 {##core-stats-reset} 核心统计重置

此操作将清除所有统计信息的计数器、错误和已完成的传输。 统计组。

参数

  • group - 统计组名称(字符串)

core/transferred: 返回已完成传输的统计信息。 {##core-transferred}

返回已完成传输的统计信息:

rclone rc core/transferred

如果未提供组,则将返回所有组的已完成传输。 返回。

注意,只会返回最近 100 次完成的传输。

参数

  • group - 统计组名称(字符串)

返回以下值:

{
	"transferred":已完成传输(包括失败的传输)的数组:
		[
			{
				"name":文件名,
				"size":文件大小(以字节为单位),
				"bytes":该文件传输的总字节数,
				"checked":是否只检查传输(跳过,删除),
				"timestamp":整数,代表毫秒级 unix 时间,
				"error":错误描述字符串(如果成功则为空),
				"jobid":此传输所属任务的 id
			}
		]
}

core/version: 显示 rclone 和 go 运行时的当前版本。 {##core-version}

显示 go 和 go runtime 的当前版本:

  • version - rclone 版本,如 “v1.53.0”。
  • decomposed - 以 [major, minor, patch] 表示的版本号
  • isGit - 布尔型 - 如果是从 git 版本编译而来,则为 true
  • isBeta - 布尔型 - 如果是测试版,则为 true
  • os - 根据 Go 使用的操作系统
  • arch - 根据 Go 使用的 CPU 架构
  • goVersion - Go 运行时的版本
  • linking - rclone 可执行文件的类型(静态或动态)
  • goTags - 用空格分隔的构建标记或 “无 “标记

debug/set-block-profile-rate: 为阻塞式剖析设置 runtime.SetBlockProfileRate。 {##debug-set-block-profile-rate} 设置阻塞剖析的运行时.SetBlockProfileRate。

SetBlockProfileRate 可控制阻塞配置文件中报告的程序阻塞事件的比例。 的百分比。 剖析器的目标是 平均每阻塞纳秒采样一次阻塞事件。

要在配置文件中包含每个阻塞事件,通过率 = 1。 要完全关闭 要完全关闭剖析,通过率 <= 0。

调用此功能后,您可以使用此功能查看阻塞曲线:

go tool pprof http://localhost:5572/debug/pprof/block

参数:

  • rate - 整数

debug/set-gc-percent: 调用 runtime/debug.SetGCPercent,设置垃圾收集目标百分比。 {##debug-set-gc-percent} 设置垃圾收集目标百分比:垃圾收集触发。

SetGCPercent 设置垃圾收集目标百分比:当新分配的数据与已分配的数据之比达到一定程度时,就会触发收集。 当新分配的数据与上一次收集后剩余的实时数据之比达到该百分比时,就会触发一次收集。 达到该百分比时,就会触发一次收集。 SetGCPercent 会返回之前的设置。 初始设置为 初始设置为启动时 GOGC 环境变量的值,如果未设置该变量,则为 100。

为了保持内存限制,可以有效降低该设置。 除非达到内存限制,否则负百分比将有效禁用垃圾回收。

详情请参见 https://pkg.go.dev/runtime/debug#SetMemoryLimit

参数:

  • gc-percent - int

debug/set-mutex-profile-fraction: 设置 runtime.SetMutexProfileFraction 以进行互斥剖析。 {##debug-set-mutex-profile-fraction} 设置运行时.SetMutexProfileFraction 以进行 mutex 分析。

设置运行时.SetMutexProfileFraction 来进行互斥剖析。 事件的比例。 平均 1/rate 事件。 将返回之前的比率。

若要完全关闭剖析,可将比率设为 0。 要只读取当前 对于 n>1,采样细节可能会发生变化)。

设置完成后,你就可以用它来分析互斥争用情况了:

go tool pprof http://localhost:5572/debug/pprof/mutex

参数:

  • rate - 整数

结果:

  • previousRate - int

debug/set-soft-memory-limit:调用 runtime/debug.SetMemoryLimit,为运行时设置软内存限制。 {##debug-set-soft-memory-limit} 设置运行时的软内存限制。

SetMemoryLimit 为运行时提供软内存限制。

运行时会采取若干措施来遵守该内存限制,包括 调整垃圾回收频率,以及更积极地向底层系统返回内存。 系统。 即使 GOGC=off(或执行 SetGCPercent(-1)),也会遵守该限制。

输入限制以字节为单位提供,包括所有映射、管理和未被 Go 运行时释放的内存。 未被 Go 运行时释放的内存。 值得注意的是,它不包括 Go 二进制文件使用的空间 和 Go 外部的内存,例如由底层系统代表进程管理的内存,或由非 Go 运行时管理的内存。 或同一进程内非 Go 代码管理的内存。 不包括的内存来源包括 代表进程持有的操作系统内核内存、 由 C 代码分配的内存,以及由 syscall.Mmap 映射的内存(因为它不受 Go 运行时管理)。

零限制或低于 Go 运行时内存使用量的限制可能会导致 垃圾回收器几乎持续运行。 不过,应用程序仍可能取得进展。

Go 运行时始终遵守内存限制,因此要有效地禁用这一行为,请将限制设置得非常高、 math.MaxInt64是禁用限制的标准值,但其值远大于计算机上的可用内存。 但比底层系统可用内存大得多的值也同样有效。

有关软内存限制的详细解释,请参阅 https://go.dev/doc/gc-guide、 以及各种常见用例和场景。

SetMemoryLimit 返回之前设置的内存限制。 负输入不会调整限制、 并允许检索当前设置的内存限制。

参数

  • mem-limit - int

fscache/clear:清除 Fs 缓存。 {#fscache-clear}}

清除 FS 缓存。 从后台创建的远程 将被缓存一段时间,以便更高效地重复调用 rc。

如果更改了后端的参数,可能需要调用 来清除缓存中已有的远程控制,然后重新创建。 它。

此调用需要身份验证。

fscache/entries: 返回 fs 缓存中的条目数。 {#fscache-entries}

返回 fs 缓存中的条目数。

返回值

  • entries - 缓存中的条目数

**此调用需要进行身份验证。

job/list: 列出正在运行的任务 ID

参数: 无。

结果:

  • executeId - 正在执行的 rclone 的字符串 ID(重启后会更改)
  • jobids - 整数作业 ID 数组(每次重启时从 1 开始)

job/status: 读取任务 ID {#job-status} 的状态

参数

  • jobid - 任务 ID(整数)。

结果:

  • finished - 布尔型
  • duration - 以秒为单位的作业运行时间
  • endTime - 作业完成的时间(例如,“2018-10-26T18:50:20.528746884+01:00)
  • error - 作业产生的错误,如果没有错误则为空字符串
  • finished - 布尔型,作业是否已完成
  • id - 同上
  • startTime - 作业开始的时间(例如,“2018-10-26T18:50:20.528336039+01:00)
  • success - 布尔型 - true 表示成功 false 表示失败
  • output - 同步调用时作业的输出结果
  • progress - 与底层任务相关的进度输出

job/stop: 停止正在运行的作业

参数: jobid

  • jobid - 作业 ID(整数)。

job/stopgroup: 停止一个组中所有正在运行的作业

参数: jobid

  • group - 组的名称(字符串)。

mount/listmounts: 显示当前挂载点

显示当前挂载点,可用于执行卸载。

不需要参数,返回

  • mountPoints:当前挂载点列表

例如

rclone rc mount/listmounts

此调用需要身份验证。

mount/mount: 创建新挂载点

rclone 允许 Linux、FreeBSD、macOS 和 Windows 使用 FUSE 将 Rclone 的任何云存储系统挂载为文件系统。 Rclone 的云存储系统作为 FUSE 文件系统。

如果未提供 mountType,则优先级如下: 1.mount 2.cmount 3.mount2

它需要以下参数:

  • fs:要挂载的远程路径(必填)
  • mountPoint:本地计算机上的有效路径(必填)
  • mountType:值之一(mount、cmount、mount2),指定要使用的挂载实现
  • mountOpt:包含挂载选项的 JSON 对象。
  • vfsOpt:包含 VFS 选项的 JSON 对象。

示例

rclone rc mount/mount fs=mydrive: mountPoint=/home/<user>/mountPoint
rclone rc mount/mount fs=mydrive: mountPoint=/home/<user>/mountPoint mountType=mount
rclone rc mount/mount fs=TestDrive: mountPoint=/mnt/tmp vfsOpt='{"CacheMode": 2}' mountOpt='{"AllowOther": true}'

vfsOpt 如 options/get 中所述,运行和运行时可在 “vfs “部分,而 mountOpt 可在 “mount “部分查看:

rclone rc options/get

此调用需要身份验证。

mount/types: 显示所有可能的挂载类型

显示所有可能的挂载类型,并以列表形式返回。

不需要参数,返回

  • mountTypes:挂载类型列表

挂载类型是字符串,如 “mount”、“mount2”、“cmount”,可作为挂载命令传递给 mount/mount。 作为 mountType 参数传递给 mount/mount。

例如

rclone rc mount/types

此调用需要身份验证。

mount/unmount: 卸载选定的活动挂载 {#mount-unmount}

rclone 允许 Linux、FreeBSD、macOS 和 Windows 挂载任何 Rclone 云存储系统作为文件系统。 FUSE。

它需要以下参数:

  • mountPoint:创建挂载的本地计算机上的有效路径(必填)

例如

rclone rc mount/unmount mountPoint=/home/<user>/mountPoint

此调用需要身份验证。

mount/unmountall: 卸载所有活动挂载

rclone 允许 Linux、FreeBSD、macOS 和 Windows 挂载任何 Rclone 云存储系统作为文件系统。 FUSE。

该命令不需要任何参数,如果卸载不成功,则返回错误信息。

例如

rclone rc mount/unmountall

此调用需要身份验证。

operations/about: 返回远程 {#operations-about} 上使用的空间。

它需要以下参数:

  • fs - 远程名称字符串,如 “drive:"。

结果与 rclone about –json 返回的一样

有关上述操作的更多信息,请参阅 about命令。

此调用需要身份验证。

###操作/检查:检查源文件和目标文件是否相同 {#operations-check}

检查源文件和目标文件是否匹配。 它会比较 大小和哈希值,并记录不匹配文件的报告。 匹配的文件。 它不会更改源文件或目标文件。

它需要以下参数:

  • srcFs - 远程名称字符串,例如 “drive: “表示源文件,”/“表示本地文件系统
  • dstFs - 远程名称字符串,例如,“drive2: “表示目的地,”/“表示本地文件系统
  • download - 通过下载而不是哈希值进行检查
  • checkFileHash - 将 checkFileFs:checkFileRemote 视为包含给定类型哈希值的 SUM 文件
  • checkFileFs - 将 checkFileFs:checkFileRemote 作为包含给定类型哈希值的 SUM 文件处理
  • checkFileRemote - 将 checkFileFs:checkFileRemote 作为带有给定类型哈希值的 SUM 文件处理
  • oneWay - 仅单向检查,源文件必须存在于远程文件中
  • combined - 合并报告更改(默认为 false)
  • missingOnSrc - 报告源文件中丢失的所有文件(默认为 true)
  • missingOnDst - 报告目的地丢失的所有文件(默认为 true)
  • match - 报告所有匹配的文件(默认为 false)
  • differ - 报告所有不匹配的文件(默认为 true)
  • error - 报告所有出错的文件(散列或读取)(默认为 true)

如果提供下载标记,它将从两个远程 两个远程设备上下载数据,并在运行中相互检查。 这对于 对于不支持哈希值的远程设备,或者如果你真的想 检查所有数据时,这种方法会非常有用。

如果您提供只比较大小的全局标志,它将只比较大小,而不是 哈希值。 用它可以进行快速检查。

如果提供 checkFileHash 选项和一个有效的哈希值名称,则 checkFileFs:checkFileRemote 必须指向一个 SUM 格式的文本文件。 这会将校验和文件视为源文件,而将 dstFs 视为目标文件。 目标文件。 请注意,srcFs 不会被使用,也不应在 在这种情况下不应提供。

返回:

  • success - 如果没有错误则为 true,否则为 false
  • status - 检查的文本摘要,确定或文本字符串
  • hashType - 检查中使用的哈希值,可能缺失
  • combined - 综合更改报告的字符串数组
  • missingOnSrc - 源文件中丢失的所有文件的字符串数组
  • missingOnDst - 目的地丢失的所有文件的字符串数组
  • match - 所有匹配文件的字符串数组
  • differ - 所有不匹配文件的字符串数组
  • error - 有错误的所有文件的字符串数组(散列或读取)

此调用需要身份验证。

操作/清理: 删除远程或路径中的垃圾文件

该操作需要以下参数:

  • fs - 远程名称字符串,例如 “drive:"。

有关上述操作的更多信息,请参阅 cleanup 命令。

此调用需要身份验证。

###Operations/copyfile: 将文件从源远程复制到目标远程 {##operations-copyfile}

该操作需要以下参数:

  • srcFs - 远程名称字符串,如 “drive: “表示源文件,”/“表示本地文件系统
  • srcRemote - 远端中的路径,例如源文件为 “file.txt”。
  • dstFs - 远程名称字符串,例如,“drive2: “表示目的地,”/“表示本地文件系统
  • dstRemote - 远端内的路径,例如,目的地为 “file2.txt

此调用需要身份验证。

操作/copyurl: 将 URL 复制到对象

该操作需要以下参数:

  • fs - 远程名称字符串,如 “drive:"。
  • remote - 远端的路径,例如 “dir
  • url - 字符串,要读取的 URL
  • autoFilename - 布尔值,设置为 true 时从 url 获取目标文件名

有关上述操作的更多信息,请参阅 copyurl 命令。

此调用需要身份验证。

操作/删除: 删除路径 {#operations-delete} 中的文件。

该操作需要以下参数:

  • fs - 远程名称字符串,如 “drive:"。

有关上述操作的更多信息,请参阅 delete 命令。

**此调用需要身份验证。

###Operations/deletefile: 删除指向 {##operations-deletefile} 的单个文件

它需要以下参数:

  • fs - 远程名称字符串,例如 “drive:"。
  • remote - 远端内的路径,如 “dir

有关上述操作的更多信息,请参阅 deletefile 命令。

此调用需要身份验证。

###Operations/fsinfo: 返回远程 {#operations-fsinfo} 的信息。

它需要以下参数:

  • fs - 远程名称字符串,例如 “drive:"。

返回传入的远程信息;

{
        // optional features and whether they are available or not
        "Features": {
                "About": true,
                "BucketBased": false,
                "BucketBasedRootOK": false,
                "CanHaveEmptyDirectories": true,
                "CaseInsensitive": false,
                "ChangeNotify": false,
                "CleanUp": false,
                "Command": true,
                "Copy": false,
                "DirCacheFlush": false,
                "DirMove": true,
                "Disconnect": false,
                "DuplicateFiles": false,
                "GetTier": false,
                "IsLocal": true,
                "ListR": false,
                "MergeDirs": false,
                "MetadataInfo": true,
                "Move": true,
                "OpenWriterAt": true,
                "PublicLink": false,
                "Purge": true,
                "PutStream": true,
                "PutUnchecked": false,
                "ReadMetadata": true,
                "ReadMimeType": false,
                "ServerSideAcrossConfigs": false,
                "SetTier": false,
                "SetWrapper": false,
                "Shutdown": false,
                "SlowHash": true,
                "SlowModTime": false,
                "UnWrap": false,
                "UserInfo": false,
                "UserMetadata": true,
                "WrapFs": false,
                "WriteMetadata": true,
                "WriteMimeType": false
        },
        // Names of hashes available
        "Hashes": [
                "md5",
                "sha1",
                "whirlpool",
                "crc32",
                "sha256",
                "dropbox",
                "mailru",
                "quickxor"
        ],
        "Name": "local",        // Name as created
        "Precision": 1,         // Precision of timestamps in ns
        "Root": "/",            // Path as created
        "String": "Local file system at /", // how the remote will appear in logs
        // Information about the system metadata for this backend
        "MetadataInfo": {
                "System": {
                        "atime": {
                                "Help": "Time of last access",
                                "Type": "RFC 3339",
                                "Example": "2006-01-02T15:04:05.999999999Z07:00"
                        },
                        "btime": {
                                "Help": "Time of file birth (creation)",
                                "Type": "RFC 3339",
                                "Example": "2006-01-02T15:04:05.999999999Z07:00"
                        },
                        "gid": {
                                "Help": "Group ID of owner",
                                "Type": "decimal number",
                                "Example": "500"
                        },
                        "mode": {
                                "Help": "File type and mode",
                                "Type": "octal, unix style",
                                "Example": "0100664"
                        },
                        "mtime": {
                                "Help": "Time of last modification",
                                "Type": "RFC 3339",
                                "Example": "2006-01-02T15:04:05.999999999Z07:00"
                        },
                        "rdev": {
                                "Help": "Device ID (if special file)",
                                "Type": "hexadecimal",
                                "Example": "1abc"
                        },
                        "uid": {
                                "Help": "User ID of owner",
                                "Type": "decimal number",
                                "Example": "500"
                        }
                },
                "Help": "Textual help string\n"
        }
}

该命令没有对应的命令行,因此请使用此命令:

rclone rc --loopback operations/fsinfo fs=remote:

operations/hashsum: 为路径中的所有对象生成哈希和文件。

使用指定的哈希值为路径中的所有对象生成哈希文件。 命名的哈希和文件。 输出格式与标准 md5sum/sha1sum 工具的格式相同。

它需要以下参数:

  • fs - 远程名称字符串,例如 “drive: “表示源文件,”/“表示本地文件系统
    • 这可以指向一个文件,列表中将只返回该文件。
  • hashType - 使用的散列类型
  • download - 通过下载而不是哈希值进行检查(布尔值)
  • base64 - 以 base64 而不是十六进制输出哈希值(布尔值)

如果提供下载标记,它将从 并即时创建哈希值。 这对于 不支持给定的哈希值,或者如果你真的想检查所有的 数据。

请注意,如果您希望提供一个检查文件来对照当前文件检查哈希值,那么您应该使用操作 则应使用 operations/check 而不是 操作/哈希总和。

返回:

  • hashsum - 散列的字符串数组
  • hashType - 使用的散列类型

示例

$ rclone rc --loopback operations/hashsum fs=bin hashType=MD5 download=true base64=true
{
    "hashType": "md5"、
    "hashsum": [
        "WTSVLpuiXyJO_kGzJerRLg== backend-versions.sh"、
        "v1b_OlWCJO9LtNq3EIKkNQ== bisect-go-rclone.sh"、
        "VHbmHzHh4taXzgag8BAIKQ==== bisect-rclone.sh"、
    ]
}

有关上述内容的更多信息,请参见 hashsum 命令。

此调用需要身份验证。

操作/列表: 以 JSON 格式列出给定的远程和路径

它需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端内的路径,如 “dir
  • opt - 用于控制列表的选项字典(可选)
    • recurse - 如果设置为递归目录
    • noModTime - 如果设置,返回修改时间
    • showEncrypted - 如果设置为显示解密名称
    • showOrigIDs - 如果设置,显示每个项目的 ID(如果已知
    • showHash - 如果设置,返回哈希值字典
    • noMimeType - 如果设置为不显示媒体类型
    • dirsOnly - 如果设置为只显示目录
    • 只显示文件 - 如果设置为只显示文件
    • metadata - 如果设置,也返回对象的元数据
    • hashTypes - 如果设置 showHash,则显示散列类型的字符串数组

返回值:

  • list
    • 这是一个对象数组,如 lsjson 命令所述

请参阅 lsjson 命令,了解有关上述内容和示例的更多信息。

此调用需要身份验证。

操作/mkdir: 创建目标目录或容器

该操作需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端中的路径,如 “dir”

有关上述操作的更多信息,请参阅 mkdir 命令。

此调用需要身份验证。

Operations/movefile: 将文件从远程源文件移动到远程目标文件

该操作需要以下参数:

  • srcFs - 远程名称字符串,例如 “drive: “表示源文件,”/“表示本地文件系统
  • srcRemote–远程文件中的路径,例如,源文件为 “file.txt”。
  • dstFs - 远程名称字符串,例如 “drive2: “表示目标地址,”/“表示本地文件系统
  • dstRemote - 远端中的路径,例如,目的地为 “file2.txt

此调用需要身份验证。

###Operations/publiclink: 创建或检索指向给定文件或文件夹的公共链接。 {##操作-公共链接}

该操作需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端的路径,如 “dir”。
  • unlink - 布尔值–如果设置为删除链接,而不是添加链接(可选)
  • expire - 字符串 - 链接的过期时间,如 “1d”(可选)

返回:

  • url - 资源的 URL

更多相关信息,请参阅 link 命令。

此调用需要身份验证。

操作/清除: 删除一个目录或容器及其所有内容

该操作需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端的路径,如 “dir”。

有关上述操作的更多信息,请参阅 purge 命令。

此调用需要身份验证。

操作/rmdir: 删除一个空目录或容器

该操作需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端的路径,如 “dir”。

有关上述操作的更多信息,请参阅 rmdir 命令。

此调用需要身份验证。

###Operations/rmdirs: 删除路径中的所有空目录 {##operations-rmdirs}

它需要以下参数:

  • fs - 远程名称字符串,如 “drive:”
  • remote - 远端内的路径,如 “dir
  • leaveRoot - 布尔值,设置为 true 时不删除根目录

有关上述操作的更多信息,请参阅 rmdirs 命令。

此调用需要身份验证。

###Operations/settier: 更改路径 {#operations-settier} 中所有文件的存储层或类。

它需要以下参数:

  • fs - 远程名称字符串,如 “drive:”

有关上述操作的更多信息,请参阅 settier 命令。

此调用需要身份验证。

操作/settierfile: 更改指向 {#operations-settierfile} 的单个文件的存储层或类。

它需要以下参数:

  • fs - 远程名称字符串,如 “drive:”
  • remote - 远端内的路径,如 “dir

有关上述操作的更多信息,请参阅 settierfile 命令。

此调用需要身份验证。

操作/大小: 计算远程{##operations-size}中的字节数和文件数。

它需要以下参数:

  • fs - 远程名称字符串,例如 “drive:path/to/dir”。

返回:

  • count - 文件数
  • bytes - 这些文件的字节数

有关上述操作的更多信息,请参阅 size 命令。

此调用需要身份验证。

###Operations/stat: 提供文件或目录的相关信息 {##operations-stat}

它需要以下参数

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端内的路径,例如 “dir
  • opt - 用于控制列表的选项字典(可选)
    • 有关选项,请参阅 operations/list

结果是

  • item - lsjson 命令中描述的对象。 如果未找到,结果将为空。

请注意,如果您只对文件感兴趣,那么设置 filesOnly 选项会更有效。 在选项中设置 filesOnly 标志会更有效。

请参阅 lsjson 命令获取更多相关信息和示例。

此调用需要身份验证。

###Operations/uploadfile: 使用多形式/表单数据上传文件 {##operations-uploadfile}

它需要以下参数:

  • fs–远程名称字符串,如 “drive:”
  • remote - 远端的路径,如 “dir
  • body 中的每个部分代表一个要上传的文件

有关上述操作的更多信息,请参阅 uploadfile命令。

此调用需要身份验证。

选项/块: 列出所有选项块

返回

  • options - 选项块名称列表

options/get: 获取所有全局选项

返回一个对象,其中键是选项块名称,值是包含当前选项值的对象。 对象。

参数:

  • blocks:以逗号分隔的选项块字符串。
    • 如果缺少该字符串或”",则全部包含。

请注意,这些是全局选项,不受使用 config 和 _filter 参数的影响。 如果希望读取 则使用 options/config,而对于 _filter 则使用 options/filter。

这里显示的是 rclone 中选项的内部名称,它们应该是 与外部选项的映射非常容易,只有少数例外。

选项/信息: 获取所有全局选项的信息

返回一个对象,其中键是选项块名称,值是包含每个选项信息的 数组的对象。

参数:

  • blocks:以逗号分隔的选项块字符串。
    • 如果缺少该字符串或为”",则包含所有选项块。

这些对象的格式与 “config/providers “返回的格式相同。 它们 选项块](#option-blocks) 部分中描述。

选项/本地: 获取本次调用的当前活动配置

返回一个包含 “config “和 “filter “键的对象。 config “键包含本地配置,“filter “键包含本地筛选器。 本地过滤器。

请注意,这些都是该 rc 调用特有的本地选项。 如果 则它们将是全局选项。 同样,"_filter “也是如此。

该调用主要用于查看 _config 和 _filter 传递是否有效。 是否有效。

这将显示 rclone 中选项的内部名称,这些名称应该是 与外部选项的映射非常容易,只有少数例外。

选项/设置 设置选项

参数:

  • 选项块名称,包含一个对象,其
    • key: value

根据需要多次重复。

只提供想要更改的选项。 如果选项未知 将被忽略。 并不是所有的选项在 都会有影响。

例如

设置 DEBUG 级别日志 (-vv)(可以用数字或字符串设置)

rclone rc options/set --json '{"main": {"LogLevel": "DEBUG"}}'
rclone rc options/set --json '{"main": {"LogLevel": 8}}'

然后设置 INFO 级别的日志 (-v)

rclone rc options/set --json '{"main": {"LogLevel": "INFO"}}'

这样就设置了 NOTICE 级别的日志(不含 -v 的普通日志)

rclone rc options/set --json '{"main": {"LogLevel": "NOTICE"}}'

pluginsctl/addPlugin: 使用网址 {#pluginsctl-addPlugin} 添加插件。

用于向 webgui 添加插件。

它需要以下参数:

  • url - 插件所在的 github 仓库的 http 网址(http://github.com/rclone/rclone-webui-react)。

示例

rclone rc pluginsctl/addPlugin

此调用需要身份验证。

pluginsctl/getPluginsForType: 根据类型标准获取插件

这将显示按 mime 类型划分的所有可能的插件。

它需要以下参数:

  • type - 已加载插件支持的 mime 类型,例如(视频/mp4、音频/mp3)。
  • pluginType - 根据插件类型过滤插件,例如(DASHBOARD、FILE_HANDLER、TERMINAL)。

返回:

  • loadedPlugins - 当前生产的插件列表。
  • testPlugins - 临时加载的开发插件列表,通常在不同的服务器上运行。

示例

rclone rc pluginsctl/getPluginsForType type=video/mp4

此调用需要身份验证。

pluginsctl/listPlugins: 获取当前加载的插件列表

通过该命令可以获取当前已启用的插件及其详细信息。

不需要参数,并返回

  • loadedPlugins - 当前生产的插件列表。
  • testPlugins - 临时加载的开发插件列表,通常在不同的服务器上运行。

例如

rclone rc pluginsctl/listPlugins

此调用需要身份验证。

pluginsctl/listTestPlugins: 显示当前加载的测试插件

允许列出 package.json 中 rclone.test 设置为 true 的测试插件。

不需要参数,并返回

  • loadedTestPlugins - 当前可用的测试插件列表。

例如

rclone rc pluginsctl/listTestPlugins

此调用需要身份验证。

pluginsctl/removePlugin: 移除已加载的插件

该命令允许使用插件名称移除该插件。

参数如下

  • name - 插件名称,格式为 author/plugin_name

例如

rclone rc pluginsctl/removePlugin name=rclone/video-plugin

此调用需要身份验证。

pluginsctl/removeTestPlugin: 移除一个测试插件

通过它可以使用插件名称删除插件。

它需要以下参数:

  • name - 插件名称,格式为 author/plugin_name.

例如

rclone rc pluginsctl/removeTestPlugin name=rclone/rclone-webui-react

此调用需要身份验证。

###rc/error: 返回错误信息 {#rc-error}

返回错误,错误字符串中包含输入内容。 用于测试错误处理。

###rc/list: 列出所有已注册的远程控制命令 {#rc-list}

此命令将所有已注册的远程控制命令以 JSON 地图的形式在 命令响应中的 JSON 地图。

rc/noop: 回传输入参数到输出参数

将输入参数回传至输出参数,用于测试 测试目的。 它可用于检查 rclone 是否仍然存活,以及检查参数传递是否正常。 检查参数传递是否正常。

###rc/noopauth: Echo the input to the output parameters requiring auth {##rc-noopauth} 回传输入参数到输出参数。

将输入参数回传至输出参数,用于测试 测试目的。 它可用于检查 rclone 是否仍然存活,以及检查参数传递是否正常。 检查参数传递是否正常。

此调用需要身份验证。

sync/bisync: 在两条路径之间执行双向同步。 {#sync-bisync} 同步/双同步

需要以下参数

  • path1 - 远程目录字符串,如drive:path1
  • path2 - 远程目录字符串,如drive:path2
  • dryRun - 干运行模式
  • resync - 执行重新同步运行
  • checkAccess - 如果在两个文件系统中均未找到 RCLONE_TEST 文件,则终止运行
  • checkFilename - 用于 checkAccess 的文件名(默认值:RCLONE_TEST)
  • maxDelete - 如果删除的文件百分比超过 此阈值(默认值:50)
  • force - 绕过 maxDelete 安全检查并运行同步
  • checkSync - 默认为truefalse则禁止比较最终列表、 only`将跳过同步,只比较上次运行的列表
  • createEmptySrcDirs - 同步创建和删除空目录。 (与 –remove-empty-dirs 不兼容)
  • removeEmptyDirs - 在最后清理步骤中删除空目录
  • filtersFile - 从文件中读取过滤模式
  • ignoreListingChecksum - 不对列表使用校验和
  • resilient - 允许未来运行在出现某些不太严重的错误后重试,而不是要求重新同步。 使用风险自负!
  • workdir - 历史文件的服务器目录(默认:~/.cache/rclone/bisync)。
  • backupdir1 - 路径 1 的备份目录。 必须是同一远程上的非重叠路径。
  • backupdir2 - 路径 2 的备份文件。 必须是同一远程上的非重叠路径。
  • noCleanup - 保留工作文件

请参阅 bisync 命令帮助bisync 完整说明 了解更多信息。

此调用需要身份验证。

sync/copy:从源远程复制目录到目标远程

该命令需要以下参数:

  • srcFs - 远程名称字符串,例如 “drive:src”(源)。
  • dstFs - 远端名称字符串,例如 “drive:dst”。
  • createEmptySrcDirs - 如果已设置,则在目的地创建空的 src 目录

有关上述操作的更多信息,请参阅 copy命令。

此调用需要身份验证。

同步/移动:将源远程目录移动到目标远程目录

该命令需要以下参数:

  • srcFs - 远程名称字符串,例如 “drive:src”(源)。
  • dstFs - 远端名称字符串,例如 “drive:dst”。
  • createEmptySrcDirs - 如果已设置,则在目的地创建空的 src 目录
  • deleteEmptySrcDirs - 如果设置,删除空的源目录

有关上述操作的更多信息,请参阅 move 命令。

此调用需要身份验证。

sync/sync:将源远程目录同步到目标远程目录

它需要以下参数:

  • srcFs - 远程名称字符串,例如 “drive:src”,表示源目录
  • dstFs - 远端名称字符串,例如 “drive:dst”。
  • createEmptySrcDirs - 如果已设置,则在目标上创建空的 src 目录

有关上述操作的更多信息,请参阅 sync 命令。

此调用需要身份验证。

vfs/forget: 遗忘目录缓存中的文件或目录。 {#vfs-forget}

此操作会遗忘目录缓存中的路径,导致需要时从远程重新读取。 需要时从远程重新读取。

如果没有传入路径,则会遗忘目录缓存中的所有路径。 目录缓存中的所有路径。

rclone rc vfs/forget

否则会以 file=path 或 dir=path 的方式传递文件或目录。 任何 开头的参数键都会忘记该文件,而以 开头的参数键都会忘记该目录,例如

rclone rc vfs/forget file=hello file2=goodbye dir=home/junk

该命令需要一个 “fs “参数。 如果没有 且只有一个 VFS 在使用中,则将使用该 VFS。 将被使用。 如果使用的 VFS 不只一个,则 “fs “参数 必须提供。

vfs/list: 列出活动 VFS。

此命令列出活动 VFS。

它返回一个以 “vfses “为关键字的列表,其中的值是可传递给 “fs “中其他 VFS 命令的 VFS VFS 名称。 参数中传递给其他 VFS 命令的 VFS 名称。

vfs/poll-interval: 获取 poll-interval 选项的状态或更新其值。 {#vfs-poll-interval}(轮询间隔时间

在没有给出任何参数的情况下,它会返回轮询间隔设置的当前状态。 轮询间隔设置的当前状态。

当设置了 interval=duration 参数后,轮询间隔值将被更新,轮询功能也会随之更新。 值将被更新并通知轮询功能。 设置 interval=0 会禁用轮询间隔。

rclone rc vfs/poll-interval interval=5m

timeout=duration 参数可用于指定等待当前轮询功能应用轮询值的时间。 当前轮询函数应用新值的等待时间。 如果 timeout 小于或等于 0(默认值),则无限期等待。

新的轮询间隔值只有在未达到超时时才会激活。 未达到。

如果暂时更新或禁用轮询间隔,某些更改 可能无法被轮询功能捕获,这取决于 使用的远程设备。

该命令需要一个 “fs “参数。 如果不提供该参数 且只有一个 VFS 在使用中,则将使用该 VFS。 将使用该 VFS。 如果使用的 VFS 不只一个,则 “fs “参数 必须提供。

vfs/queue: VFS 的队列信息。 {#vfs-queue}

返回所选 VFS 的上传队列信息。

只有在 --vfs-cache-mode > off 时才有用。 如果在 vfs-cache-mode “关闭时调用,将返回空结果。

{
    "queued": // an array of files queued for upload
    [
        {
            "name":      "file",   // string: name (full path) of the file,
            "id":        123,      // integer: id of this item in the queue,
            "size":      79,       // integer: size of the file in bytes
            "expiry":    1.5       // float: time until file is eligible for transfer, lowest goes first
            "tries":     1,        // integer: number of times we have tried to upload
            "delay":     5.0,      // float: seconds between upload attempts
            "uploading": false,    // boolean: true if item is being uploaded
        },
   ],
}

过期 “时间是文件符合上传条件的时间,以浮点秒为单位。 以浮点秒为单位。 该时间可能为负数。 由于 rclone 只一次性传输 -ransfers 文件,因此只有最低的 上传 “为 “true”。 因此 可能会有到期时间为负数的文件,其 uploading 为 为 “false”。

该命令需要一个 “fs “参数。 如果没有 且只有一个 VFS 在使用中,则将使用该 VFS。 将使用该 VFS。 如果有多个 VFS 正在使用,则必须提供 “fs “参数。 必须提供。

vfs/queue-set-expiry: 设置排队上传项目的过期时间。 {#vfs-queue-set-expiry}(队列设置过期时间

用它来调整上传队列中项目的 “过期 “时间。 在使用此调用之前,你需要使用 vfs/queue 读取项目的 id 。 读取项目的 “id”。

然后,你可以将 expiry 设置为一个浮点数,即从现在起的 的浮点数。 如果希望项目 那么就将其设置为一个较大的负数(例如 -1000000000). 如果希望延迟上传项目 则将其设置为大正数。

设置已开始上传的项目的 `过期时间 将不会有任何影响 - 项目将继续上传。

如果在关闭 --vfs-cache-mode 或 未找到所传递的 id 时,将返回错误信息。

它需要以下参数

  • fs - 选择正在使用的 VFS(可选)
  • id - 从 vfs/queue 返回的数字 ID
  • expiry` - 新的过期时间(浮点秒数
  • relative - 如果设置,过期时间将被视为相对于当前过期时间(可选,布尔型)

成功时返回空结果,否则返回错误结果。

该命令需要一个 “fs “参数。 如果没有 且只有一个 VFS 在使用中,则将使用该 VFS。 将使用该 VFS。 如果使用中的 VFS 不只一个,则 “fs “参数 必须提供。

vfs/refresh: 刷新目录缓存。 {#vfs-refresh}

读取指定路径下的目录并刷新目录缓存。 目录缓存。

如果没有指定路径,则会刷新根目录。

rclone rc vfs/refresh

否则以 dir=path 传入目录。 任何以 都会刷新该目录,例如

rclone rc vfs/refresh dir=home/junk dir2=data/misc

如果参数递归=true,整个目录树 将被刷新。 如果启用–fast-list,刷新将使用–fast-list。

该命令需要一个 “fs “参数。 如果没有 且只有一个 VFS 在使用中,则将使用该 VFS。 将使用该 VFS。 如果使用中的 VFS 不只一个,则 “fs “参数 必须提供。

vfs/stats: VFS 的统计信息。

返回所选 VFS 的统计信息。

{
    // Status of the disk cache - only present if --vfs-cache-mode > off
    "diskCache": {
        "bytesUsed": 0,
        "erroredFiles": 0,
        "files": 0,
        "hashType": 1,
        "outOfSpace": false,
        "path": "/home/user/.cache/rclone/vfs/local/mnt/a",
        "pathMeta": "/home/user/.cache/rclone/vfsMeta/local/mnt/a",
        "uploadsInProgress": 0,
        "uploadsQueued": 0
    },
    "fs": "/mnt/a",
    "inUse": 1,
    // Status of the in memory metadata cache
    "metadataCache": {
        "dirs": 1,
        "files": 0
    },
    // Options as returned by options/get
    "opt": {
        "CacheMaxAge": 3600000000000,
        // ...
        "WriteWait": 1000000000
    }
}

该命令需要一个 “fs “参数。 如果没有 且只有一个 VFS 在使用中,则将使用该 VFS。 将使用该 VFS。 如果使用的 VFS 不只一个,则必须提供 “fs “参数。 参数。

通过 HTTP 访问远程控制

Rclone 实现了一个简单的基于 HTTP 的协议。

每个端点接收一个 JSON 对象,并返回一个 JSON 对象或一个 错误。 JSON 对象本质上是字符串名称到 值的映射。

所有调用都必须使用 POST 方式。

输入对象可以使用 URL 参数、POST 参数或在正文中提供 “Content-Type: application/json “和一个 JSON blob 下面有使用 curl 的示例。

响应的正文将是一个 JSON blob。 这个 格式为合理的人类可读格式。

错误返回

如果发生错误,则会出现 HTTP 错误状态(例如 500) 响应正文将包含一个 JSON 编码的错误对象、 例如

{
    "error": "Expecting string value for key \"remote\" (was float64)",
    "input": {
        "fs": "/tmp",
        "remote": 3
    },
    "status": 400
    "path": "operations/rmdir",
}

错误回复中的键是

  • error - 错误字符串
  • input - 调用的输入参数
  • status - HTTP 状态代码
  • path - 调用的路径

CORS

服务器支持基本的 CORS,并允许所有来源。 对预检 OPTIONS 请求的响应将回传所请求的 “Access-Control-Request-Headers”(访问控制请求头)。

###仅使用带 URL 参数的 POST

curl -X POST 'http://localhost:5572/rc/noop?potato=1&sausage=2'

Response

{
	"potato": "1",
	"sausage": "2"
}

下面是错误响应的样子:

curl -X POST 'http://localhost:5572/rc/error?potato=1&sausage=2'
{
	"error": "arbitrary error on input map[potato:1 sausage:2]",
	"input": {
		"potato": "1",
		"sausage": "2"
	}
}

注意,除非使用 -f 选项,否则 curl 不会向 shell 返回错误信息。

$ curl -f -X POST 'http://localhost:5572/rc/error?potato=1&sausage=2'
curl: (22) The requested URL returned error: 400 Bad Request
$ echo $?
22

使用 POST 表单

curl --data "potato=1" --data "sausage=2" http://localhost:5572/rc/noop

Response

{
	"potato": "1",
	"sausage": "2"
}

请注意,您也可以通过 POST 参数优先。

curl --data "potato=1" --data "sausage=2" "http://localhost:5572/rc/noop?rutabaga=3&sausage=4"

Response

{
	"potato": "1",
	"rutabaga": "3",
	"sausage": "4"
}

使用 POST 发送 JSON blob

curl -H "Content-Type: application/json" -X POST -d '{"potato":2,"sausage":1}' http://localhost:5572/rc/noop

response

{
	"password": "xyz",
	"username": "xyz"
}

如果需要,也可以与 URL 参数结合使用。 JSON blob 优先。

curl -H "Content-Type: application/json" -X POST -d '{"potato":2,"sausage":1}' 'http://localhost:5572/rc/noop?rutabaga=3&potato=4'
{
	"potato": 2,
	"rutabaga": "3",
	"sausage": 1
}

使用 pprof 调试 rclone

如果使用 --rc 标志,还可以在同一端口上使用 go 剖析工具。

要使用这些工具,首先 install go

调试内存使用情况

要分析 rclone 的内存使用情况,可以运行

go tool pprof -web http://localhost:5572/debug/pprof/heap

这将在浏览器中打开一个页面,显示正在使用什么内存。 内存。

你也可以使用 -text 标记来生成文本摘要

$ go tool pprof -text http://localhost:5572/debug/pprof/heap
Showing nodes accounting for 1537.03kB, 100% of 1537.03kB total
      flat  flat%   sum%        cum   cum%
 1024.03kB 66.62% 66.62%  1024.03kB 66.62%  github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.addDecoderNode
     513kB 33.38%   100%      513kB 33.38%  net/http.newBufioWriterSize
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/cmd/all.init
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/cmd/serve.init
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/cmd/serve/restic.init
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/vendor/golang.org/x/net/http2.init
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.init
         0     0%   100%  1024.03kB 66.62%  github.com/rclone/rclone/vendor/golang.org/x/net/http2/hpack.init.0
         0     0%   100%  1024.03kB 66.62%  main.init
         0     0%   100%      513kB 33.38%  net/http.(*conn).readRequest
         0     0%   100%      513kB 33.38%  net/http.(*conn).serve
         0     0%   100%  1024.03kB 66.62%  runtime.main

调试go routine泄漏

内存泄漏最常见的原因是 go 例程泄漏导致本应被垃圾回收的内存 而导致的。

使用

curl http://localhost:5572/debug/pprof/goroutine?debug=1

或在浏览器中访问 http://localhost:5572/debug/pprof/goroutine?debug=1。

查看其他配置文件

您可以在 http://localhost:5572/debug/pprof/ 上查看可用的配置文件摘要。

以下是其中一些配置文件的使用方法:

  • Memory: go tool pprof http://localhost:5572/debug/pprof/heap
  • Go routines: curl http://localhost:5572/debug/pprof/goroutine?debug=1
  • 30-second CPU profile: go tool pprof http://localhost:5572/debug/pprof/profile
  • 5-second execution trace: wget http://localhost:5572/debug/pprof/trace?seconds=5
  • Goroutine blocking profile
    • Enable first with: rclone rc debug/set-block-profile-rate rate=1 (docs)
    • go tool pprof http://localhost:5572/debug/pprof/block
  • Contended mutexes:
    • Enable first with: rclone rc debug/set-mutex-profile-fraction rate=1 (docs)
    • go tool pprof http://localhost:5572/debug/pprof/mutex

请参阅 net/http/pprof docs 有关如何使用剖析的更多信息和一般概述 请参阅 Go 团队关于剖析 go 程序的博文

剖析钩子除非使用,否则开销为零